繁体   English   中英

服务器和客户端问题:socket.gaierror:[Erno 11001] getaddrinfo失败

[英]Server and client issue: socket.gaierror: [Erno 11001] getaddrinfo failed

我是网络工作原理的新手,我正在尝试为类分配编写两个脚本,一个充当服务器,一个充当客户端。 服务器和客户端脚本都将在同一台计算机上运行,​​并且每个脚本都使用两个不同的端口(客户端端口和服务器端口)。 客户端应该能够将消息发送到服务器,如果发送成功,则可以获取消息。 这是客户端代码:

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)

我在这里看到多个有关此错误的线程,但是它们都没有真正帮助解决我的问题。 在执行两个脚本之前,我已经检查确保两个端口都已打开,并且它们确实已经打开。 我最初的猜测是,即使启动并正在运行并等待响应,它也无法找到实际的服务器端口。 所以我很困惑。 此错误是什么意思,我该如何解决?

您在尝试发送消息之前忘记将客户端套接字实际连接到服务器套接字:

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()

我也将serverName更改为localhost

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM