2

我们正在尝试运行一个简单的 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 denied”,为什么?

4

2 回答 2

1

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

于 2013-09-25T03:47:19.217 回答
0

我尝试了这个例子,但我不得不改变客户端中的这两行来让它运行(然后它似乎在网络上运行良好):

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

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

于 2015-04-28T12:10:15.070 回答