问题描述
我正在尝试制作一个程序,该程序可以根据服务器输入的端口自动连接到本地网络中的计算机。然后具有相同端口的客户端尝试使用 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 (将#修改为@)