是否可以编写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);
Run Code Online (Sandbox Code Playgroud)
但是我想从中运行它python -c,所以它应该是一行.
我怎样才能做到这一点?
使用itertools.count和reduce(在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())
Run Code Online (Sandbox Code Playgroud)
你也可以像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())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1887 次 |
| 最近记录: |