繁体   English   中英

套接字无法通过wifi网络运行Python

[英]Sockets are not working over wifi networks Python

我做了一个聊天程序。 如果计算机连接到相同的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
  1. 为什么会出现此错误?
  2. 我该如何解决?

服务器脚本:

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))

最可能的原因是每个WiFi网络的内部IP地址之间缺少任何路由。 请记住,大多数wifi网络上的IP地址都是该网络的本地地址。

当我使用Raspberry Pi构建一个小的远程控制设备时,我经历了无数次完全相同的问题。 不幸的是,只有两种解决方案,这两种解决方案都很痛苦。

您可以通过端口转发与尝试连接的设备相连的路由器,如果它不是静态路由器,则每次重置路由器时都需要执行此操作。 然后,您还需要连接到所述路由器的IP而不是目标计算机,并且端口转发应完成其余工作。

另一种选择是在两个设备上都使用Logmein Hamachi,但这是a。)并非总是可能的,具体取决于您所使用的系统,并且b。)有变得不可靠的习惯。 据我所知,没有一种方法可以仅使用python进行编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM