Python one liner静音套接字监听器

时间:2014-09-01 15:58:33

标签: python sockets

是否可以编写python one-liner,它将侦听特定的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 个答案:

答案 0 :(得分:5)

使用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())