2016-08-21 47 views
2

同じLAN上に2台のコンピュータがあります。最初のPCのIPアドレスは192.168.178.30、もう一方のPCのIPアドレスは192.168.178.26です。 Ping、traceroute、telnet、sshは、2台のPC間ですべて動作します。どちらのPCも同じOS(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上で実行されたときに動作します。 1つのPCでクライアントコードを実行し、もう1つの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

これは試してみる価値がありますが、特定のLAN IPにのみバインドすることも可能です。 – jPlatte

+0

ちょうどそれをテストしました。それでも同じエラー。とにかく、私はそれが192.168.178.30でも動作するはずだと思います。 – ThePraetor

+0

ええ、実際に問題を起こすリスニングパートだった場合、エラーは次の解決策で言及されているファイアウォールと同じ 'Connection refused'のようなものになります。 'No route to host'は、受信デバイスが接続を受け入れないことではなく、どのデバイスにメッセージを送信すべきかを把握することさえできないことを意味します。 – jPlatte

0

私はMessaのようにファイアウォールを停止し、今は動作します。

service firewalld stop 

私はまだ問題が何かを理解していません。私は別のディストリビューションを使ってみました。すべてのディストリビューションに厳しいファイアウォールなどがありますか?たとえば、UbuntuへのUbuntu、CentOSへのUbuntu、UbuntuへのCentOS、私はまだ同じ問題(エラー)を持っていました。

関連する問題