使用Python向外部计算机打开套接字

发布于 2024-12-11 14:10:35 字数 610 浏览 0 评论 0原文

我正在使用以下代码在我的计算机上打开套接字。当我在计算机上访问 my_ip:5000 时,程序会做出响应。但是,当我使用另一台计算机时,什么也没有发生。

HOST = 'my_ip'                 # Symbolic name meaning the local host
PORT = 8000              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

我不确定这是否是防火墙的问题。当我使用 manage.py runserver my_ip:8000 在 django 中启动测试服务器时,我可以从另一台计算机连接到该计算机。我不确定是什么导致我无法使用上面的代码从另一台计算机连接......

I am using the following code to open a socket on my computer. When I go to my_ip:5000 on my computer the program responds. However, when I use another computer, nothing happens.

HOST = 'my_ip'                 # Symbolic name meaning the local host
PORT = 8000              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

I'm not sure if this is an issue with the firewall or not. When I start up the test server in django using manage.py runserver my_ip:8000 I am able to connect to the machine from a different computer. I'm not sure what is causing me not to be able to connect from another computer using the code above...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

思慕 2024-12-18 14:10:35

通过将 HOST 设置为 'my_ip',您可以监听仅解析到您的计算机的私有 IP。最著名的示例是 127.0.0.1。相反,传递一个空字符串 (HOST='') 来侦听来自指定端口的任何请求。确保两台计算机上使用相同的端口号,即 5000 或 8000。

另外,检查计算机之间(或其中一台计算机上安装的)是否阻止连接。

要测试您的计算机原则上是否可达,请在服务器上没有私有信息的目录中运行 python -m SimpleHTTPServer 并尝试从客户端访问以此启动的 Web 服务器。

By setting HOST to 'my_ip', you may listen to a private IP that only resolves to your computer for your computer. The best-known example is 127.0.0.1. Instead, pass an empty string (HOST='') to listen to any requests coming in at the specified port. Make sure to use the same port number, i.e. either 5000 or 8000, on both machines.

Also, check whether a firewall between the computers (or installed on one of them) prevents the connection.

To test whether your computer is reachable in principle, run python -m SimpleHTTPServer in a directory without private information on the server and try to reach the webserver started with that from the client.

少女情怀诗 2024-12-18 14:10:35

该代码看起来是正确的,因此您的问题出在其他地方(可能是“my_ip”的防火墙问题或 dns 问题)。

The code looks to be correct, so your problem lies elsewhere (perhaps a firewall issue or dns problem for "my_ip").

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文