Errno 61连接拒绝UDP客户端服务器应用程序

时间:2013-09-25 03:34:57

标签: python udp

我们正在尝试运行一个简单的UDP客户端服务器应用程序。

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 connection refused',为什么?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我尝试了这个例子,但我不得不在客户端中更改这两行以使其运行(然后它似乎在网络上正常运行):

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

但是我已经看到' Errno 61连接遭到拒绝' UDP连接 - 通常表示已收到ICMP目标无法到达响应,以回复发送到服务器上未绑定端口的数据包。但这只会导致Errno 61的套接字调用connect((server,port)),然后用于send()初始数据包,随后(有足够的延迟接收ICMP数据包)调用recv() - 引发包含Errno 61的异常(请参阅此answer以了解如何捕获它)。

相关问题