У меня есть следующий код для эхо-клиента , который отправляет данные на эхо-сервер с использованием сокетного соединения:
echo_client.py
import socket
host = '192.168.2.2'
port = 50000
size = 1024
def get_command():
#..Code for this here
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
while 1:
msg = get_command()
if msg == 'turn on':
s.send('Y')
elif msg == 'turn off':
s.send('N')
elif msg == 'bye bye':
break
else:
s.send('X')
data = s.recv(size)
print 'Received: ',data
s.close()
echo_server.py
import socket
host = ''
port = 50000
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
while 1:
client, address = s.accept()
data = client.recv(size)
if data:
client.send(data)
client.close()
Проблема, с которой я сталкиваюсь, заключается в том, что в клиенте s.send работает только в первый раз хотя его в бесконечном цикле.Клиент аварийно завершает работу с тайм-аутом соединения, через некоторое время после завершения первой отправки / получения .
Почему s.send работает только один раз?Как я могу исправить это в моем коде?
Пожалуйста, помогите Спасибо