Пожалуйста, позвольте мне начать говорить, что я новичок в Python (студент первого курса CS), и это первый язык программирования, который я изучаю.
У меня есть задание, которое состоит из 2 частей;Клиент и сервер
На стороне сервера я пытаюсь:
1) создать сервер, который постоянно ожидает UDP-сообщения и ожидает двух отдельных UDP-сообщений (string1 и string2)
2) Затем он объединяет строки из 2 пакетов в виде string3, отправляет их клиенту в одном UDP-пакете и запускает снова.
например, сервер получает string1 и string2 в виде pinea и pples, создает ананасы в виде string3 и отправляет string3 клиенту
На стороне клиента я должен написать некоторый код, который: 1) запрашиваетклиент для строки при запуске #
2) разбивает эту строку на 2 (n / 2, если n четное и (n + 1) / 2 и (n-1) / 2, если n нечетное))
3) ожидает строку с сервера в отдельном UDP-пакете
4) проверяет, выводит ли строка с сервера = объединение двух разделенных строк
5) результатиз окончательного ответа
например, пользователь вводит строку как ананасы, клиент отправляет строки1 и строку2 как pinea и pples;затем получает string3 от сервера в виде ананасов и проверяет, что string3 == string1 + string2.
Я пытаюсь выяснить, почему после настройки моего сервера я не могу отправлять пакеты на сервер и с сервера.
В настоящее время я использую Python IDLE 3.7.3, я посмотрел довольно много видео и прочитал некоторые другие форумы по переполнению стека, но не смог определить проблему, как упоминалось ранее, я новичок и очень хотел быспасибо за любую помощь
Вот мой код:
для сервера, который у меня есть:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
address = ("127.0.0.1", 5002)
sock.bind (address)
while True:
data,addr= sock.recvfrom(1024)
print (data)
print (addr)
sock.listen(5)
мой код клиента выглядит следующим образом:
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s=str(input("Please input a word: "))
string1 = s[:len(s)//2]
string2 = s[:len(s)//2:]
message1= string1.encode()
message2= string2.encode()
sock.sendto(message1+message1,("127.0.0.1",5002))
received= sock.recv(1024)
received==string1+string2
while True:
print (message1, message2)
print (received)
В настоящее время я получаю сообщение об ошибке «Существующее соединение было принудительно закрыто удаленным хостом», когда я пытаюсь запустить свой клиентский код.
Большое спасибо (это также мой первый раз, когда я использую Stack Overflow, поэтому, пожалуйста, дайте мне знать, если я сделал что-то неуместное в своем посте, чтобы я мог исправить)