我做了一个聊天程序。如果计算机连接到相同的wifi网络,它的工作原理。但如果他们在不同的wifi网络上,我会收到这个错误:
error: [Errno 10060] A connection attempt failed because the connected party did not properly
respond after a period of time, or established connection failed because connected host has failed
to respond
服务器脚本:
def startServer(self):
self.host = "localhost"
self.port = 8888
self.s = socket.socket()
self.s.bind((self.host, self.port))
self.s.listen(4)
chatArea = self.chatArea
chatArea.configure(state=NORMAL)
chatArea.insert(END, "The server has started!\n\n")
chatArea.configure(state=DISABLED)
for i in range(4):
Thread(target=self.connectClient).start()
def connectClient(self):
conn, addr = self.s.accept()
data = conn.recv(1024)
data = str(data)
self.connections.append(conn)
self.names.append(data)
name = self.names.index(data)
while str(data) != "Close":
data = conn.recv(1024)
if not data:
break
data = str(data)
if data != "Close":
string = self.names[name] + ": " + data + "\n"
self.chatArea.configure(state=NORMAL)
self.chatArea.insert(END, string)
self.chatArea.configure(state=DISABLED)
self.sendToClients(self.names[name], data)
self.connections.remove(conn)
conn.close()
这是客户端脚本:
def connect(self):
self.host = "The other computer ip address"
self.port = 8888
self.s = socket.socket()
self.s.connect((self.host, self.port))
答案 0 :(得分:1)
最可能的原因是每个wifi网络上的内部IP地址之间缺少任何路由。请记住,大多数无线网络上的IP地址都是网络本地的。
答案 1 :(得分:0)
当我使用Raspberry Pi构建一个小型遥控设备时,我已经无数次地完成了相同的问题。不幸的是,只有两种解决方案,这两种解决方案都很痛苦。
您可以将连接到您尝试连接的设备的路由器转发到端口,如果它不是静态的,则每次重置时都需要执行此操作。然后,您还需要连接到所述路由器的IP而不是目标计算机,端口转发应该完成其余的工作。
替代方案是在两个设备上使用Logmein Hamachi,但这是一个。)并不总是可能取决于您使用的系统,并且b。)习惯变得不可靠。无论如何,就我所知,没有办法在python中进行编码。