Это сообщение неправильно помечено как "отправить", так как я не могу создавать новые теги.
У меня очень простой вопрос об этом простом эхо-сервере. Вот некоторые фрагменты кода.
клиент
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 блокируется по очереди. Что тут происходит?
Спасибо за чтение!