Python socket.error:[Errno 113]没有到主机的路由但ping工作

时间:2017-04-26 08:14:08

标签: python sockets routing

我正在尝试使用TCP进行连接。在客户端,我有以下代码

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正常工作。我需要将ping作为sudo运行,因为在没有sudo的情况下运行它会产生ping: icmp open socket: Operation not permitted

1 个答案:

答案 0 :(得分:3)

它最终成为无线电接口的路由策略。它不允许TCP数据包。该规则由IT部门制定,无法更改。

我使用另一个接口(即我的代码工作)将sendind TCP数据包发送到其他主机后得出了这个结论

我确定有路线。我手动设置特定IP的路由表,并确保远程主机的输入策略设置为接受TCP数据包。