Server and client issue: socket.gaierror: [Erno 11001] getaddrinfo failed
Server and client issue: socket.gaierror: [Erno 11001] getaddrinfo failed
我不熟悉网络的工作原理,我正在尝试为 class 作业编写两个脚本,一个充当服务器,一个充当客户端。服务器和客户端脚本都在同一台计算机上 运行 并且每个脚本都使用两个不同的端口(客户端端口和服务器端口)。客户端应该能够向服务器发送消息,然后在发送成功时得到返回消息。这是客户端代码:
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)
我在这里看到了多个关于此错误的讨论帖,但其中 none 个确实帮助解决了我的问题。在执行这两个脚本之前,我已经检查以确保两个端口都已打开,它们确实打开了。我最初的猜测是它找不到实际的服务器端口,即使它已启动并且 运行ning 并正在等待响应。所以我很难过。这个错误是什么意思,我该如何解决?
您在尝试发送消息之前忘记将客户端套接字实际连接到服务器套接字:
from socket import *
serverName = 'localhost'
serverPort = 2000
clientSocket = socket(AF_INET, SOCK_DGRAM)
clientSocket.connect((serverName, serverPort))
message = input('Input lowercase sentence:')
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(3000)
print(modifiedMessage.decode())
clientSocket.close()
我也将服务器名称更改为 localhost
。
我不熟悉网络的工作原理,我正在尝试为 class 作业编写两个脚本,一个充当服务器,一个充当客户端。服务器和客户端脚本都在同一台计算机上 运行 并且每个脚本都使用两个不同的端口(客户端端口和服务器端口)。客户端应该能够向服务器发送消息,然后在发送成功时得到返回消息。这是客户端代码:
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)
我在这里看到了多个关于此错误的讨论帖,但其中 none 个确实帮助解决了我的问题。在执行这两个脚本之前,我已经检查以确保两个端口都已打开,它们确实打开了。我最初的猜测是它找不到实际的服务器端口,即使它已启动并且 运行ning 并正在等待响应。所以我很难过。这个错误是什么意思,我该如何解决?
您在尝试发送消息之前忘记将客户端套接字实际连接到服务器套接字:
from socket import *
serverName = 'localhost'
serverPort = 2000
clientSocket = socket(AF_INET, SOCK_DGRAM)
clientSocket.connect((serverName, serverPort))
message = input('Input lowercase sentence:')
clientSocket.sendto(message.encode(), (serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(3000)
print(modifiedMessage.decode())
clientSocket.close()
我也将服务器名称更改为 localhost
。