Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在获取主机的IP地址_Java_Android_Sockets_Libgdx_Serversocket - Fatal编程技术网

Java 正在获取主机的IP地址

Java 正在获取主机的IP地址,java,android,sockets,libgdx,serversocket,Java,Android,Sockets,Libgdx,Serversocket,我创建了一个小游戏,现在我正试图用它制作一个多人游戏。一部安卓手机应该是游戏主机,另一部手机应该能够连接到这个服务器。我的问题是如何告诉客户端他应该连接到哪个IP。有没有办法扫描主机 您可以使用网络服务发现: 如果我理解正确,您希望游戏主机在可访问网络中向要加入的客户端发布自己的广告 在网络协议栈的不同级别上,有许多可能会发生这种情况 我想到了一些值得一看的东西: 会合协议: 您好: 一个著名的中央目录服务器,跟踪谁提供服务以及谁想玩(LDAP、DNS等) 口碑:将你的IP告诉用户,她将通过语

我创建了一个小游戏,现在我正试图用它制作一个多人游戏。一部安卓手机应该是游戏主机,另一部手机应该能够连接到这个服务器。我的问题是如何告诉客户端他应该连接到哪个IP。有没有办法扫描主机

您可以使用网络服务发现:


如果我理解正确,您希望游戏主机在可访问网络中向要加入的客户端发布自己的广告

在网络协议栈的不同级别上,有许多可能会发生这种情况

我想到了一些值得一看的东西:

  • 会合协议:
  • 您好:
  • 一个著名的中央目录服务器,跟踪谁提供服务以及谁想玩(LDAP、DNS等)
  • 口碑:将你的IP告诉用户,她将通过语音向其他玩家广播
  • IRC频道或在您控制之外建立的其他中央通信方式,如Twitter帐户
你看,有很多可能性。也许你想把你的问题缩小到你的具体需要:

  • 观众是谁,是一个“局域网派对”,还是移动空间中的其他手机
  • 你想投入多少精力
  • 您需要支持哪些平台

对于Android游戏,有一个完美(且简单)的库,名为

它有一种方法-用于扫描本地网络以查找正在侦听传入连接的设备

此外,它还包含以下类:

这使得在UDP和TCP协议上实现简单的通信协议变得非常容易

由于很多人都使用这个库(包括我),你可以找到很多例子

。。。还有许多其他的。:)

更新1: 谷歌还有一个很棒的库,名为“自动发现本地网络中的设备”,可以创建多人(或多屏幕)游戏

此外,谷歌还为WAN上的多人游戏创建了nice(多平台)API:


您可以找到附近连接和实时多人游戏API的示例。

距离有多远?在全世界几十米?首先,你需要一个配对服务器。第二,还有其他技术可以使用。请注意,只有当您在同一个wifi网络上时,这才有效。正确。我假设OP要求的是实际的网络。。。当然,NSD不适用于整个互联网。为此,您需要一台服务器。虽然这是一种很好的局域网方法,但值得注意的是,它不能在iOS上工作(即使在局域网上),也不能在Internet上工作。最简单的方法是使用一个简单的服务器,它什么也不做,只是告诉客户端他们可以加入开放服务器的IP。我甚至用粗体字提到了这是一个仅适用于本地网络的解决方案。是的,配对服务器是广域网游戏所必需的。