Я новичок в том, как работает сеть, и я пытаюсь написать два сценария для назначения класса, один действует как сервер, а другой - как клиент.Как серверные, так и клиентские сценарии должны выполняться на одном компьютере, и каждый из них использует два разных порта (клиентский порт и порт сервера).Клиент должен иметь возможность отправить сообщение на сервер, а затем получить сообщение обратно, если отправка прошла успешно.Это код клиента:
from socket import *
serverName = 'hostname'
serverPort = 2000
clientSocket = socket(AF_INET, SOCK_DGRAM)
message = input('Input lowercase sentence:')
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(3000)
print(modifiedMessage.decode())
clientSocket.close()
А это код сервера:
from socket import *
serverPort = 2000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverPort))
print("The server is ready to receive")
while True:
message, clientAddress = serverSocket.recvfrom(3000)
modifiedMessage = message.decode().upper()
serverSocket.sendto(modifiedMessage.encode(), clientAddress)
Код сервера работает нормально, но я получаю эту ошибку при запуске кода клиента:
socket.gaierror: [Erno 11001] getaddrinfo failed
В частности, это не нравится
clientSocket.sendto(message.encode(), (serverName, serverPort)
Я видел несколько потоков здесь об этой ошибке, но ни один из них действительно не помог с моей проблемой.Я уже проверил, чтобы убедиться, что оба порта однозначно открыты перед выполнением обоих сценариев, и они открыты.Мое первоначальное предположение состоит в том, что он не может найти реальный порт сервера, даже если он работает и ждет ответа.Так что я в тупике.Что означает эта ошибка и как я могу решить эту проблему?