Python 一行代码静默套接字监听器

6 投票
1 回答
4083 浏览
提问于 2025-04-19 05:58

有没有办法用一行代码写个Python程序,让它监听一个特定的TCP端口,接受连接,但不做任何回应呢?

我可以用两行代码做到这一点:

import socket; s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.bind(("", 5555)); s.listen(1); accepter = s.accept();
while True: data = accepter[0].recv(1024);

但是我想用 python -c 来运行,所以需要把它写成一行。

我该怎么做呢?

1 个回答

7

使用 itertools.countreduce (在 Python 3.x 中,你需要用 functools.reduce):

import socket, itertools; s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); s.bind(('', 5555)); s.listen(1); accepter = s.accept(); reduce(lambda x, y: accepter[0].recv(1024), itertools.count())

你也可以使用其他无限迭代器,比如 itertools.cycleitertools.repeat

接下来的代码是对上面那行代码的详细扩展版本。

import socket, itertools
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 5555))
s.listen(1)
accepter = s.accept()
reduce(lambda x, y: accepter[0].recv(1024), itertools.count())

撰写回答