微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

本地网络中Python自动连接调用WinError 10061

如何解决本地网络中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})(?=\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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。