C套接字客户端在不知道IP地址的情况下与局域网外的服务器通信
C socket Client communicate with Server outside LAN without knowing IP address
我用套接字写了一个小游戏,多个客户端加入游戏,在局域网中一切正常。现在我想扩展到 LAN 外的客户端,我想知道的是:如果我不知道客户端的 IP 地址,那么程序是否可以运行?
我在局域网内使用:
char *ip = "127.0.0.1";
客户端需要知道服务器的 IP 才能连接到它。
如果客户端和服务器 运行 在同一台机器上,服务器可以侦听 127.0.0.1
并且客户端可以连接到该 IP。
如果客户端和服务器运行在同一个局域网,服务器需要监听连接到局域网的网卡,客户端才能连接到服务器的局域网IP。
如果客户端 运行 正在不同的网络上并希望通过 Internet 连接到服务器,则客户端必须连接到服务器的 public Internet IP,该 IP 由服务器的互联网服务提供商。如果服务器 运行ning 在 NAT 路由器后面,public IP 会分配给路由器而不是直接分配给服务器,因此路由器必须有 端口转发 配置为将传入连接路由到路由器 LAN 上的服务器计算机。
如果客户端不知道要连接的 IP,服务器将需要在客户端可以查询的地方发布其 IP,例如通过 DNS、网站、中央 public 服务器所有客户端连接以进行中继等
我用套接字写了一个小游戏,多个客户端加入游戏,在局域网中一切正常。现在我想扩展到 LAN 外的客户端,我想知道的是:如果我不知道客户端的 IP 地址,那么程序是否可以运行?
我在局域网内使用:
char *ip = "127.0.0.1";
客户端需要知道服务器的 IP 才能连接到它。
如果客户端和服务器 运行 在同一台机器上,服务器可以侦听 127.0.0.1
并且客户端可以连接到该 IP。
如果客户端和服务器运行在同一个局域网,服务器需要监听连接到局域网的网卡,客户端才能连接到服务器的局域网IP。
如果客户端 运行 正在不同的网络上并希望通过 Internet 连接到服务器,则客户端必须连接到服务器的 public Internet IP,该 IP 由服务器的互联网服务提供商。如果服务器 运行ning 在 NAT 路由器后面,public IP 会分配给路由器而不是直接分配给服务器,因此路由器必须有 端口转发 配置为将传入连接路由到路由器 LAN 上的服务器计算机。
如果客户端不知道要连接的 IP,服务器将需要在客户端可以查询的地方发布其 IP,例如通过 DNS、网站、中央 public 服务器所有客户端连接以进行中继等