2016-08-21 112 views
2

我有2臺計算機在同一局域網。第一臺PC的IP地址爲192.168.178.30,另一臺PC的IP地址爲192.168.178.26。 Ping,traceroute,telnet,ssh,一切正常工作在兩臺PC之間。兩臺PC都運行相同的操作系統 - CentOS 7,並且兩臺PC都具有相同的Python版本2.7.5(使用python -V命令進行檢查)。Python 2.7 [Errno 113]沒有路由到主機

我從計算機網絡書上覆制了簡單的python代碼。

client.py

from socket import * 
serverName = '192.168.178.30' 
serverPort = 12000 
clientSocket = socket(AF_INET, SOCK_STREAM) 
clientSocket.connect((serverName,serverPort)) 
sentence = raw_input('Input lowercase sentence: ') 
clientSocket.send(sentence) 
modifiedSentence = clientSocket.recv(1024) 
print 'From Server:', modifiedSentence 
clientSocket.close() 

server.py

from socket import * 
serverPort = 12000 
serverSocket = socket(AF_INET,SOCK_STREAM) 
serverSocket.bind(('192.168.178.30',serverPort)) 
serverSocket.listen(5) 
print 'The server is ready to receive' 
while 1: 
     connectionSocket, addr = serverSocket.accept() 
     sentence = connectionSocket.recv(1024) 
     capitalizedSentence = sentence.upper() 
     connectionSocket.send(capitalizedSentence) 
     connectionSocket.close() 

當它在同一臺PC(其中服務器監聽localhost)上運行的代碼工作。 當我在一臺PC上運行客戶端代碼並在另一臺PC上運行服務器代碼時,客戶端出現此錯誤。

Traceback (most recent call last): 
    File "client.py", line 5, in <module> 
    clientSocket.connect((serverName,serverPort)) 
    File "/usr/lib64/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 113] No route to host 

有人可以幫忙嗎?

+0

您可以將兩臺機器的網絡配置('ip addr')添加到您的問題嗎?這似乎是一個網絡問題,而不是Python API的問題。 – jPlatte

回答

2

檢查防火牆(在服務器上)。

+0

@ThePraetor:你剛纔刪除了你對這個答案的評論嗎?如果禁用防火牆工作,我實際上很想知道你禁用它的位置,因爲當它是服務器防火牆時,我在關於「無路由到主機」消息的其他評論中顯然是錯誤的。 – jPlatte

+0

我加了一個答案。誤刪了我的評論:(。 – ThePraetor

1

您應該bind服務器套接字到'0.0.0.0',而不是'192.168.178.30'

+0

儘管值得一試,但它也應該只能綁定到特定的局域網IP。 – jPlatte

+0

剛剛測試過。還是一樣的錯誤。無論如何,我認爲即使在192.168.178.30的情況下也應該可以工作。 – ThePraetor

+0

是的,實際上,如果是監聽部分會導致問題,那麼錯誤將會像'連接被拒絕'一樣,與下一個解決方案中提到的防火牆一樣。 '沒有路由到主機'意味着程序甚至不能確定它應該發送消息的設備,而不是接收設備不會接受連接。 – jPlatte

0

我停止了像梅薩建議的防火牆,現在它的工作原理。

service firewalld stop 

我還是不明白是什麼問題。我甚至嘗試過使用不同的發行版。所有的發行版都有嚴格的防火牆或其他東西。例如Ubuntu到Ubuntu,Ubuntu到CentOS,CentOS到Ubuntu我仍然有同樣的問題(錯誤)。

相關問題