【发布时间】:2016-09-17 09:33:33
【问题描述】:
这个accept() 方法返回一个带有新套接字和地址的元组,但是如果我已经有了一个新套接字,为什么我需要一个新套接字,那么为什么不使用它呢?
import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
print 'connected:', addr
while True:
data = conn.recv(1024)
if not data:
break
conn.send(data.upper())
conn.close()
ps:当我用 Java 编写套接字时,我真的没有这种接受的东西,我只需要每个客户端一个套接字,每个服务器一个,这是有道理的。
【问题讨论】:
-
Java 以完全相同的方式执行此操作。两者都是标准 Socket API 的简单包装器。
-
你应该阅读一个好的套接字教程。它将清除这一点和许多其他事情。试试docs.python.org/3/howto/sockets.html
-
查看ServerSocket 类。对于 Python,请参阅 stackoverflow.com/questions/12454675/…
-
这是一个相当低级的 API。您可能在 Java 中工作的水平更高。您也可以在 Python 中使用库,例如 twisted。