python套接字Windows 10连接超时

时间:2018-11-09 19:03:25

标签: python sockets windows-10

我们最近将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和端口可用,并且不会引发任何错误。

1 个答案:

答案 0 :(得分:0)

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

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

这是一个解决方案:

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