2013-09-25 117 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以瞭解如何捕捉它)。

相關問題