这只是一个编程问题,更多的是网络问题。
我正在尝试在我的家庭网络中运行Django网络应用程序,但我无法让网络上的任何计算机进入网页。我没有运气就在端口80和8000上运行。错误消息是:“Firefox无法在192.168.x.x建立与服务器的连接。”
我尝试在客户端使用python中的套接字:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect ( ("192.168.x.x", 80) )
我只是得到“socket.error(10061,'拒绝连接')”。有趣的是,我可以连接端口25。
没有运行Windows防火墙。电缆调制解调器前面有一个NetGear路由器/防火墙。
我应该怎样配置这个?
也尝试过:
import urllib2
urllib2.urlopen("http://192.168.x.x/")
同样的事情。
Re:“你能从正在运行的机器上看到Django应用吗?”
是。它可以在同一台机器上运行。它不适用于整个网络。
我还可以将服务器设置为在我选择的任何端口(80,8000等)上运行,并且可以在本地访问,而不是通过网络访问。
Q值。它是netstat-able吗? 答:是的:
Proto Local Address Foreign Address State
....
TCP D3FL2J71:http localhost:1140 TIME_WAIT
TCP D3FL2J71:http localhost:1147 TIME_WAIT
我在本地的两个浏览器窗口中显示了该网站。
使用显式外部端口(不依赖于localhost):
python manage.py runserver 192.168.x.x:8000
冰冰冰冰!我们有一个胜利者!
哇,我很高兴这不是网络问题。
“Django应用程序肯定会在192.168.x.x地址上宣传自己而不仅仅是在环回适配器上?”
Jon似乎也在正确的轨道上,但是评论没有指出我的方向 - 检查Django服务器的设置调用。
答案 0 :(得分:3)
我假设您正在运行django dev服务器?如果是这样,请确保启动它以便它将绑定到其他计算机需要用于连接的IP地址:
python manage.py runserver 192.168.x.x:8000
您可以要求服务器绑定到所有地址(我自己也没试过这个地址,我承认):
python manage.py runserver 0.0.0.0:8000
正常的runserver使用只绑定到localhost,我很害怕。