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