UDP-用于远程连接的服务器和客户端 ip
UDP- server and client ip for for far connection
我用带有 udp 套接字的 blender 游戏引擎构建了一个网络游戏,我有 server.blend 和 client.blend。在我家里,游戏运行良好,连接也很好..但是当我将 client.blend 发送给朋友时,他无法连接到我的服务器..
这是我的服务器构造函数:
class Server:
def __init__(self, host="", port= 9017):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setblocking(False)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((host, port))
这是我客户的构造函数:
class Client:
def __init__(self, server_ip="192.168.1.12", server_port= 9017):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setblocking(False)
self.serv_addr = (server_ip, server_port)
我认为由于 IP 地址的原因,它无法在我朋友的计算机上运行。
有人知道问题出在哪里吗?
您使用的硬编码 IP 是 RFC 1918 私有 IP 地址,无法通过 Internet 路由。如果您的朋友连接到与您相同的局域网,他很可能能够连接到您的服务器。从根本上说,这归结为网络问题。
可能的解决方案是在您的应用程序中定义一个主机名,并使用 DynDNS 提供商将该主机名注册到您路由器的 public IP。然后在您的家庭路由器上设置端口转发,以允许从 Internet 连接到您需要的 udp 端口上的服务器。还有一千种其他方法可以解决类似的问题,但实际上这属于网络领域而不是编程领域。
我用带有 udp 套接字的 blender 游戏引擎构建了一个网络游戏,我有 server.blend 和 client.blend。在我家里,游戏运行良好,连接也很好..但是当我将 client.blend 发送给朋友时,他无法连接到我的服务器..
这是我的服务器构造函数:
class Server:
def __init__(self, host="", port= 9017):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setblocking(False)
self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.socket.bind((host, port))
这是我客户的构造函数:
class Client:
def __init__(self, server_ip="192.168.1.12", server_port= 9017):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.socket.setblocking(False)
self.serv_addr = (server_ip, server_port)
我认为由于 IP 地址的原因,它无法在我朋友的计算机上运行。
有人知道问题出在哪里吗?
您使用的硬编码 IP 是 RFC 1918 私有 IP 地址,无法通过 Internet 路由。如果您的朋友连接到与您相同的局域网,他很可能能够连接到您的服务器。从根本上说,这归结为网络问题。
可能的解决方案是在您的应用程序中定义一个主机名,并使用 DynDNS 提供商将该主机名注册到您路由器的 public IP。然后在您的家庭路由器上设置端口转发,以允许从 Internet 连接到您需要的 udp 端口上的服务器。还有一千种其他方法可以解决类似的问题,但实际上这属于网络领域而不是编程领域。