1
由于我无法创建新标签,因此此帖被错误标记为'发送'。python socket.recv/sendall呼叫阻止
我对这个简单的回声服务器有一个非常基本的问题。以下是一些代码片段。
客户
while True:
data = raw_input("Enter data: ")
mySock.sendall(data)
echoedData = mySock.recv(1024)
if not echoedData: break
print echoedData
服务器
while True:
print "Waiting for connection"
(clientSock, address) = serverSock.accept()
print "Entering read loop"
while True:
print "Waiting for data"
data = clientSock.recv(1024)
if not data: break
clientSock.send(data)
clientSock.close()
现在这个工作好了,当客户端发送一个空字符串(通过敲击回车键响应“输入数据”),除了在这种情况下,我看到了一些死锁行为。
现在,当用户按下客户端返回时发生了什么?我只能想象sendall调用块将等待一些数据添加到发送缓冲区,导致recv调用依次被阻止。这里发生了什么?
感谢您的阅读!
感谢您的帮助! – fsm 2010-03-31 02:17:39