Я покажу вам код, который я создал, затем расскажу вам через него:
Сервер:
import socket
HOST = '127.0.0.1'
PORT = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
while True:
data = conn.recv(1024)
conn.sendall(data)
Для сервера, который я удалил:
if not data:
break
Это просто не сработало для меня.Если вы знаете, что ваше сообщение будет меньше 1024 байтов (что здесь), это не нужно.Но если вы хотите более длинное сообщение, измените это значение на большее.Так что да, вы были правы, подозревая, что это была та линия.
Клиент:
import socket
HOST = '127.0.0.1'
PORT = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
print("Connected")
while True:
print("Sending data")
s.sendall(b'Hello, world')
print("Recieving data")
data = s.recv(1024)
print('Echoing: ', repr(data))
Для клиентской стороны я просто добавил процесс отправки и получения в цикл.
На заметку:
Это работает только для меня при запуске через терминал, я не знаю, знаете ли вы, как это сделать, так что извините, если высделайте, вот ссылка, объясняющая: https://www.wikihow.com/Use-Windows-Command-Prompt-to-Run-a-Python-File Я предполагал, что вы используете Windows.Вам нужно будет следовать процессу как для вашей программы client.py, так и для server.py.Сначала убедитесь, что вы запускаете программу server.py.
Это приведет к бесконечному циклу отправки и получения.Нажмите Ctrl + C, чтобы завершить.
Я надеюсь, что это решит вашу проблему, и вы можете соответственно изменить код.Любые дальнейшие проблемы, пожалуйста, оставьте комментарий, и я постараюсь ответить вам.