2017-04-26 292 views
0

TCPを使用して接続しようとしています。クライアント側では、私は次のコードPython socket.error:[Errno 113]ホストへの経路はありませんが、pingが機能します

import socket 
BUFFER_SIZE = 1024 

server_addres = ('172.16.1.52',3201) 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(server_addres) 
data = s.recv(BUFFER_SIZE) 
s.close() 

print "received data:", data 

を持っている私が使用してそれを実行します。

sudo python myProgram.py 

を私が実行した場合、このエラーは、しかし

File "/usr/lib/python2.7/socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
socket.error: [Errno 113] No route to host 

を表示されます。

sudo ping 172.16.1.52 

pingは正常に動作します。私はsudoなしで実行しているので、sudoとしてpingを実行する必要があります。ping: icmp open socket: Operation not permitted

+1

ファイアウォールを確認してください。また、[\ [die.net \]: 'traceroute'](https://linux.die.net/man/8/traceroute)を使ってルートを確認してください。 – CristiFati

答えて

0

それは無線インターフェイスのルーティングポリシーになってしまいました。 TCPパケットを許可しませんでした。ルールはIT部門によって設定され、変更できませんでした。

私はルートがあったことを確認した

(すなわち、私のコードは、働いていた)別のインターフェイスを使用して他のホストにsendind TCPパケットの後にこの結論に達しました。特定のIPのルーティングテーブルを手動で設定し、リモートホストからの入力ポリシーがTCPパケットを受け入れるように設定されていることを確認しました。

関連する問題