Это сообщение неверно помечено как 'send', так как я не могу создать новые теги.python socket.recv/sendall call blocking
У меня есть очень простой вопрос об этом простом эхо-сервере. Вот некоторые фрагменты кода.
клиент
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