networking - 定位服务器 IP 地址
问题描述
我正在 Libgdx 中制作一个游戏,其中用户(客户端)将自己是服务器的主机,并且只有一个其他客户端可以连接到他并与他一起玩(同样可能有多个独立的服务器和一对客户端互相玩像 miniclip 游戏),但其他客户端将如何定位主机客户端(或服务器)IP?我正在使用 kryonet 有人建议我做 NAT 打孔之类的,但我完全糊涂了。请帮忙
(我完全是网络初学者)
解决方案
如果您希望您的客户端仅在 LAN 中发现服务器,您可以在服务器上进行广播并在客户端上进行嗅探。由于它们在同一个 LAN 中,因此不需要 NAT。
否则,您必须在 Internet 上设置管理器(用于管理的服务器)。服务器必须向管理器注册自己,客户端向管理器询问服务器信息。由于管理人员知道服务器和客户端的公共 IP 地址,因此一旦您将管理人员视为STUN服务器,NAT 应该很容易。
最简单的管理器可以只是一个简单的数据库/Redis 包装器,带有服务器名称/服务器 ip/服务器元数据表。有关如何实现它的详细信息取决于您的技能堆栈。要启用 STUN,您可以使用开源 STUN 服务器和客户端,例如coturn。无论您是否将 STUN 服务器放入您的管理器,您的管理器和 STUN 服务器都必须发布在互联网上(当然包括 AWS),并且它们有自己的公共 IP。
或者您可以让管理员为服务器和客户端中继消息。但这种方式与以前相比可能过于复杂。我不会推荐。
推荐阅读
- python - 从数字到二进制的 Pandas DataFrame 操作
- javascript - 对对象数组的数组求和
- sql - 在过程中重用 Select 语句
- python - 如何通过 OpenLdap 使用 Python ldap3 验证用户和密码?
- python - 无法使用 Python(子进程)进行 Git 推送?
- android - java.io.IOException:无法运行程序“/data/user/0/packagename/files/ffmpeg”:FFMPEG 错误=13,在 android Q API 级别 29 中权限被拒绝
- .net-4.0 - 用于与遗留系统通信的 Protobuf
- c# - 在winform上将原始图像显示为视频(超过30fps)
- math - 如何计算球体上几何图形的旋转以使它们朝外
- ios - 如何找到最新 iPhone 设备相机的准确视野 (FOV)?