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

问题描述:

我想连接使用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工作正常。我需要运行ping为sudo,因为运行它没有sudo给出ping: icmp open socket: Operation not permitted

+1

检查任何防火墙。同时使用[\ [die.net \]:'traceroute'](https://linux.die.net/man/8/traceroute)检查路线。 – CristiFati

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

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

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