python simpleHTTPServer仅与本地机器一起工作

piy*_*vra 4 python networking 14.04

我运行以下命令来运行 http 服务器

python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

并收到以下消息

Serving HTTP on 0.0.0.0 port 8000 ...
Run Code Online (Sandbox Code Playgroud)

但我无法在本地 wifi 网络中的另一台机器/手机上访问它,我尝试从我的本地机器访问它并能够访问它。

请让我知道是否有人能够找出问题所在。提前致谢。

Hen*_*eck 6

SimpleHTTPServer默认绑定到 ip 地址0.0.0.0。这是一个特殊的地址,实际上意味着“任何地址”。如果要绑定到例如localhostor 127.0.0.1,则只能从本地机器连接到它,因为127.0.0.1属于回送设备。但是使用0.0.0.0,服务器绑定到loeth0以及您可能拥有的任何其他网络设备。

因此,您的小型服务器应该可以从网络中的其他机器访问。这并不表示有什么东西(除了你的小服务器)禁止它,也许是防火墙。您可以使用nmap另一台机器检查端口 8000 的状态(您可能需要安装nmap)。假设你的小服务器运行在 ip 192.168.0.1 上,另一台机器是 192.168.2.101。然后你会从 192.168.2.101 开始

nmap -p 8000 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的

PORT     STATE SERVICE
8000/tcp open  http-alt
Run Code Online (Sandbox Code Playgroud)

如果状态为“打开”,则端口是可访问的,并且有一些东西在那里监听,所以你的小服务器应该是可访问的。

如果状态为“关闭”,则端口是可访问的,但那里没有任何监听。在这种情况下,可能您的服务器已终止,或者您混淆了 ip 或端口号。

如果状态为“已过滤”,则有某种 ip 过滤防火墙在起作用,可阻止您访问您的小服务器。