首页 > 解决方案 > 本地网络调用中的 Python 自动连接 WinError 10061

问题描述

我正在尝试制作一个程序,该程序可以根据服务器输入的端口自动连接到本地网络中的计算机。然后具有相同端口的客户端尝试使用 arp -a 命令查找本地网络中的每台计算机并尝试连接到他。

这是连接方法:

def connect(self):
    devices = []
    for device in os.popen('arp -a'): devices.append(device)
    for ip in devices:
        b = re.findall(r"(?:\s|\A)(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?=\s|\Z)", ip)
        try:
            print(b[0])
            client_socket = socket.socket()
            client_socket.settimeout(3)
            client_socket.connect((b[0], self.port))
            if type(client_socket) != None:
                return client_socket
        except Exception as e:
            print(e)

我遇到了一个非常奇怪的问题:当我尝试成为一台计算机上的服务器时,它运行得很好。但是,当我尝试切换角色并成为该计算机上的客户端时,它突然找不到目标计算机并且当它尝试其 IP 时(我知道,因为我使用 ipconfig 检查了计算机的 IP 地址),它出错了:

[WinError 10061] No connection could be made because the target machine actively refused it
timed out

我在两台不同的计算机上尝试这个,当我用这台计算机作为服务器尝试这个时它完美连接。任何帮助,将不胜感激。

编辑:另外,我认为注意无论我将套接字上的超时设置多高,它都会等待正确的 IP 的时间,然后说它超时。尽管服务器已经绑定了端口...

编辑2.0:考虑查看另一台计算机上连接程序的连接错误......完全不同。没有 10061 错误,只是超时并列出索引错误,这对于函数的性质是完全可以理解的。为什么只有一台电脑出现10061错误?为什么当它的 2 台不同的计算机?我想知道。

标签: pythonsocketslan

解决方案


推荐阅读