【问题标题】:python TCP client can't connect to my TCP serverpython TCP客户端无法连接到我的TCP服务器
【发布时间】:2012-08-03 05:49:22
【问题描述】:

我可以运行我的程序的两个实例并将它们相互连接,但是当其他 ip 上的其他人尝试连接到我的服务器时,他们的套接字无法连接。我的代码没有输入用户计算机的 ip,但是硬编码了我的 ip(因为我将是唯一运行服务器的人)。

这里是服务器类连接函数:

def connect(self,host,port):
    self.host = host
    self.port = port
    self.unconnected_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.unconnected_socket.bind((self.host,self.port))
    self.unconnected_socket.listen(5)

这是程序创建游戏的时间

self.server = server.Server()
self.server.connect(ip,port) #ip is my computer's ip address
self.serverThread = Thread(target=self.server.serve_forever)
self.serverThread.daemon = True
self.serverThread.start()
self.client.connect(ip,port)

现在这里是类客户端连接函数:

def connect(self,host,port):
    self.host = host
    self.port = port
    self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.socket.connect((self.host,self.port))

当其他计算机上的某人运行该程序但选择加入游戏时:

self.client.connect(ip,port)

我正在使用稍微修改过的 Mastermind Networking Lib - 来自 pygames 的 1.5.2。

【问题讨论】:

  • 您的服务器在哪个主机上监听?确保它是公共接口而不是 localhost。
  • 别忘了检查防火墙规则。
  • 软管/IP 是我猜我家的服务器和客户端的 IP 地址不是 127.0.0.1。我确保将 pythonw 作为防火墙的例外。
  • 我发现我的问题是,我没有从我的计算机为服务器转发端口,也没有让客户端连接到我的外部 IP。

标签: python networking tcp pygame


【解决方案1】:

盲目猜测:您可能正在将您的服务器绑定到地址127.0.0.1(或localhost)。无法从出站连接访问此地址。 相反,您应该将绑定地址的主机设置为socket.INADDR_ANY

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2021-08-12
    • 2022-01-16
    • 2019-06-06
    • 2019-06-18
    相关资源
    最近更新 更多