2013-09-25 94 views
2

我们正在尝试运行简单的UDP客户端服务器应用程序。针对UDP客户端服务器应用程序拒绝Errno 61连接

UDPServer.py

from socket import * 
serverPort = 12000 
serverSocket = socket(AF_INET,SOCK_DGRAM) 
serverSocket.bind(('',serverPort)) 
print "The server is ready to receive" 
while 1: 
    message, clientAddress = serverSocket.recvfrom(2048) 
    modifiedMessage = message.upper() 
    serverSocket.sendto(modifiedMessage, clientAddress) 

UDPClient.py

from socket import * 
serverName = 'servername' 
serverPort = 12000 
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) 
message = raw_input('Input lowercase sentence:') 
clientSocket.sendto(message,(serverName, serverPort)) 
modifiedMessage = clientSocket.recvfrom(1024) 
print modifiedMessage 
clientSocket.close() 

服务器首先运行,但客户端获取错误 'errno的61连接被拒绝',为什么呢?

+0

客户端和服务器防火墙都关闭 –

+0

和'服务器名'实际上是服务器的IP地址我刚刚删除它的这个问题 –

+0

我尝试了我的机器上的代码,它的工作(使用127.0.0.1作为serverName)。 IP地址可能不正确?你能提供关于你的网络设置的更多细节吗? – justhalf

回答

1

如果您在同一台计算机上运行这两个程序,请将客户端serverName更改为serverName ='localhost'。如果在两台不同的机器上,serverName应该是服务器的IP地址,并关闭防火墙。

0

我试过的例子了,但我不得不改变在客户端这两条线来得到它运行(然后将它看上去一切正常通过网络):

import socket 
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 

但是我所看到的'UDP连接拒绝'Errno 61连接 - 通常表示收到ICMP目的地不可达响应以回复发送到服务器上未绑定端口的数据包。但是这只会导致带有一个套接字的Errno 61,该套接字已调用connect((server,port)),并且该套接字已被用于初始数据包,并随后(具有足够的延迟以接收ICMP数据包)调用recv() - 这会引发包含Errno 61(请参阅此answer以了解如何捕捉它)。

相关问题