我正在尝试编写 perl TCP 服务器/python TCP 客户端,现在我有这样的代码:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ("127.0.0.1", 9000)
sock.connect(server_address)
try:
message = unicode('Test')
sock.sendall(message)
data = sock.recv(1024)
print data
finally:
sock.close()
而且我注意到,我的 TCP 服务器(用 perl 编写)不是在之后sendall(message)
,而是在之后close()
。服务器就像一个回显服务器一样工作,并在收到消息后向客户端发送数据。这会导致死锁,服务器永远不会收到消息,客户端永远不会收到响应。可能是什么问题?期间会发生什么close()
,该消息到达服务器?