获取主机IP地址
Getting IP address of host
我创建了一个小游戏,现在我正在尝试用它制作一款多人游戏。一个 android phone 应该主持游戏,另一个 phone 应该能够连接到这个服务器。我的问题是如何告诉客户他应该连接到哪个 IP。有没有办法扫描主机?
您可以使用网络服务发现:
http://developer.android.com/intl/es/training/connect-devices-wirelessly/nsd.html
如果我没理解错的话,你希望游戏主机在可达网络中宣传自己,让客户端加入。
在网络协议栈的不同层次上有很多可能性。
我想到的要看的东西:
- 会合协议:https://en.wikipedia.org/wiki/Rendezvous_protocol
- 你好:https://de.wikipedia.org/wiki/Bonjour_%28Apple%29
- 一个众所周知的中央目录服务器,它跟踪谁在提供和谁想玩(LDAP、DNS、...)
- 口口相传:将您的IP告诉用户,她会通过语音将其广播给其他玩家。
- IRC 频道或其他不受您控制的中央通信方式,例如 Twitter 帐户。
你看,有很多可能性。也许您想将问题缩小到您的特定需求:
- 听众是谁,是"LAN-party",手机某处的其他手机space?
- 你愿意为此付出多少努力?
- 您需要支持哪些平台?
对于 Android 游戏,有一个完美(且简单)的库,名为 kryonet。
它有一个方法 - discoverHost - 用于扫描本地网络 以查找正在侦听传入连接的设备。
另外,它包含类例如:
这使得实现简单的通信协议(UDP 和 TCP 协议)变得非常容易。
因为很多人使用这个库(包括我)- 你可以找到很多例子:
- The Simplest and Easiest Game Network layer with KRYONET
- KryoNet Client and Server Example
- Kryonet's itself examples
...以及许多其他人。 :)
更新 1:
Google 还有一个名为 Nearby Connections API 的很棒的库,它允许 自动发现本地网络中的设备 并允许创建多人游戏(或多屏幕)游戏。
此外,Google 已经为 WAN 上的多人游戏创建了不错的(多平台)API:
您可以找到附近连接和实时多人游戏 API 的示例 here。
我创建了一个小游戏,现在我正在尝试用它制作一款多人游戏。一个 android phone 应该主持游戏,另一个 phone 应该能够连接到这个服务器。我的问题是如何告诉客户他应该连接到哪个 IP。有没有办法扫描主机?
您可以使用网络服务发现:
http://developer.android.com/intl/es/training/connect-devices-wirelessly/nsd.html
如果我没理解错的话,你希望游戏主机在可达网络中宣传自己,让客户端加入。
在网络协议栈的不同层次上有很多可能性。
我想到的要看的东西:
- 会合协议:https://en.wikipedia.org/wiki/Rendezvous_protocol
- 你好:https://de.wikipedia.org/wiki/Bonjour_%28Apple%29
- 一个众所周知的中央目录服务器,它跟踪谁在提供和谁想玩(LDAP、DNS、...)
- 口口相传:将您的IP告诉用户,她会通过语音将其广播给其他玩家。
- IRC 频道或其他不受您控制的中央通信方式,例如 Twitter 帐户。
你看,有很多可能性。也许您想将问题缩小到您的特定需求:
- 听众是谁,是"LAN-party",手机某处的其他手机space?
- 你愿意为此付出多少努力?
- 您需要支持哪些平台?
对于 Android 游戏,有一个完美(且简单)的库,名为 kryonet。
它有一个方法 - discoverHost - 用于扫描本地网络 以查找正在侦听传入连接的设备。
另外,它包含类例如:
这使得实现简单的通信协议(UDP 和 TCP 协议)变得非常容易。
因为很多人使用这个库(包括我)- 你可以找到很多例子:
- The Simplest and Easiest Game Network layer with KRYONET
- KryoNet Client and Server Example
- Kryonet's itself examples
...以及许多其他人。 :)
更新 1:
Google 还有一个名为 Nearby Connections API 的很棒的库,它允许 自动发现本地网络中的设备 并允许创建多人游戏(或多屏幕)游戏。
此外,Google 已经为 WAN 上的多人游戏创建了不错的(多平台)API:
您可以找到附近连接和实时多人游戏 API 的示例 here。