Как сохранять socket-соединение в Python? Решил сделать чат на Python 2.7. Код клиента:import socket
message = raw_input('> ')
sock = socket.socket()
sock.connect(('127.0.0.1', 9090))
sock.send(message)
data = sock.recv(1024)
sock.close()
print data
и сервера:import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
print 'Connected: ', addr
while True:
data = conn.recv(1024)
if not data:
break
print addr, 'sent a message: ', data
conn.send(data.upper())
conn.close()
Одно сообщение проходит отлично. После чего сервер и клиент закрываются. Я пытался закомментировать conn.close, да и как только не извращался, но результат один.

21 Авг 2019 в 06:43
203 +1
0
Ответы
1

Для сохранения соединения между клиентом и сервером вам необходимо добавить цикл в клиентский код, чтобы он оставался открытым и мог продолжать общение с сервером.

Пример исправленного клиентского кода:

import socket
sock = socket.socket()
sock.connect(('127.0.0.1', 9090))
while True:
message = raw_input('> ')
sock.send(message)
data = sock.recv(1024)
print data
sock.close()

Теперь клиент будет оставаться подключенным к серверу и сможет отправлять сообщения и получать ответы от сервера.

Также не забудьте исправить ошибку в серверном коде - необходимо добавить цикл для ожидания и обработки новых соединений:

import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
while True:
conn, addr = sock.accept()
print 'Connected: ', addr
while True:
data = conn.recv(1024)
if not data:
break
print addr, 'sent a message: ', data
conn.send(data.upper())
conn.close()

Теперь сервер также остается открытым и может обработать несколько соединений от разных клиентов.

20 Апр 2024 в 13:14
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир