我们正在尝试运行一个简单的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',为什么?
答案 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以了解如何捕获它)。