python - 本地网络调用中的 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 台不同的计算机?我想知道。
解决方案
推荐阅读
- remote-debugging - 调试渲染器进程
- react-native - React-Native 中的增强现实
- azerothcore - Azerothcore sql 汇编器脚本不起作用
- wso2-am - Wso2 carbon/apimgt 开源代码下载
- c# - 如何在 asp.net core 项目中使用自己的库
- view - Drupal 8 基于节点引用查看实体引用暴露过滤器
- powerbi - 从 Rss Feed 获取数据以支持 BI
- apache-spark - 如何在点语法中转义点,例如在 get_json_object 中?
- typescript - Vue 3.0 中的事件处理变化?
- flutter - flutter:让页面导航手势与自定义手势共存