是否可以编写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
上运行它,所以应该是一行。
我怎样才能做到这一点?
发布于 2014-09-01 08:05:14
使用itertools.count
和reduce
(在Python3.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.cycle
或itertools.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())
https://stackoverflow.com/questions/25609467
复制相似问题