【问题标题】:python socket Windows 10 connection times outpython socket Windows 10连接超时
【发布时间】:2018-11-10 04:20:53
【问题描述】:

我们最近将一台 Windows 计算机从 Windows 7 升级到了 Windows 10,对操作系统进行了完全干净的安装。当它运行 Windows 7 时,我们托管了几个简单的 python 套接字服务器,以便网络上的另一台 Linux 计算机可以与 Windows 机器上的某些驱动程序接口。该系统(将套接字服务器绑定到开放端口并侦听响应)在此次升级之前的一年中运行良好。

当我们更新 Windows 机器上的操作系统时,之前在两台计算机之间建立 SOCK_STREAM 服务器连接的相同 python 脚本停止运行。当被要求连接时,连接只是超时。

有谁知道可能影响套接字在 Windows 10 上侦听能力的任何更改,和/或对此问题的任何修复?在大量挖掘中,我们无法找到明显的修复方法。

这是在每台计算机上运行的代码的基本示例。

Windows 10:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("XX.XX.XX.XX", XXXXX))
s.listen()
while True:
    conn, addr = s.accept() 
    try:
        conn.settimeout(3)
        data = conn.recv(1024)
    except:
        break
    if not data:break
# more code follows to process the data, etc.

在 Linux 上:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(10) # this timeout can change, and it just hangs indefinitely when removed
s.connect(("XX.XX.XX.XX",XXXXX))

上面引用为一系列 X 的 IP 和端口是可用的,并且不会引发任何错误。

【问题讨论】:

  • 90% 的时间,这是防火墙问题,另外 10% 是客户端计算机中的防火墙问题
  • 是的,这是防火墙问题。我在玩名为“我的世界”的游戏时遇到了这个问题

标签: python sockets windows-10


【解决方案1】:

这是一个防火墙问题(就像@yorodm 所说的那样),所以出错的不是 Python 代码,而是计算机。

我无法为 Linux 计算机提供解决方案(我假设它运行正常,防火墙允许传入连接),但我可以为 Windows 10 计算机提供解决方案。

所以这里有一个解决方案:

转到“开始”,然后启动 Cortana。输入“允许应用程序通过 Windows 防火墙”,然后点击“Enter”键。点击“更改设置”按钮,在“python.exe”旁边,勾选左侧的复选框,如果尚未启用,勾选python.exe右侧的两个。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 2012-10-16
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 2017-11-22
    • 2014-01-21
    相关资源
    最近更新 更多