小编Vis*_*nda的帖子

套接字"无主机路由"错误

我有一个限制性防火墙后面的连接,它只允许通过代理(10.10.1.100:9401)进行HTTP(S)访问.我得到的IP地址是动态的,子网掩码是255.255.255.255(我知道,很奇怪!).

我尝试编写一个简单的Python套接字程序来连接代理,以便发送一些HTTP请求:

import socket

s = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
s.connect(( "10.10.1.100", 9401 ))
s.send("GET /index.html HTTP/1.1\r\nHost: aorotos.com\r\n\r\n")
d = s.recv(1024)
print d
s.close()
Run Code Online (Sandbox Code Playgroud)

在连接期间,我得到一个例外(113,"无主机路由").现在这里是奇怪的部分 - 我可以使用这些相同的代理设置浏览网页,如果通过netstat -tna我检查当前连接的套接字,我会看到与10.10.1.100:9401的ACTIVE连接.

我尝试了一个简单的命令export http_proxy='10.10.1.100:9401' && wget aorotos.com/index.html,甚至可行!如果我-d在wget中启用调试选项(),我甚至可以获得套接字的文件描述符.

我浏览了wget源代码,从我所看到的它也使用了一个普通的连接语句,并没有设置任何特殊的套接字选项(我将在以后更详细地介绍它).我在C中尝试了相同的代码,它也失败了.

通过提供的路由表route

Destination Gateway     Genmask     Flags   Metric Ref  Use Iface
default      *          0.0.0.0       U     0      0     0  gprs0
Run Code Online (Sandbox Code Playgroud)

有谁知道什么可能是错的?

编辑:目前我的IP是10.16.82.250.这就是route输出中的所有内容.如果您感兴趣我的外部IP是203.8.8.2.

ifconfig gprs0 -

gprs0     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.17.221.94  P-t-P:10.17.221.94  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:1400 …
Run Code Online (Sandbox Code Playgroud)

c python sockets routing

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

python ×1

routing ×1

sockets ×1