Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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 Android本地主机上的Socket通信_Java_Android_Sockets_Localhost - Fatal编程技术网

Java Android本地主机上的Socket通信

Java Android本地主机上的Socket通信,java,android,sockets,localhost,Java,Android,Sockets,Localhost,我正在开发多个需要通过套接字相互通信的应用程序。首先,我需要他们能够在本地主机上进行通信。因此,当我在手机上同时运行这两个功能时,它们可以进行通信(我知道在同一部手机上有更简单的方法,但将来它们将在不同的手机上运行) 我的套接字通信代码与此非常相似: 不同之处在于,我的应用程序将此作为前台服务运行 我已经将客户端上服务器的ip设置为127.0.0.1,但它们无法连接(不在模拟器中,也不在真实手机上)。我错过了什么 更新: 我找到了一种简单的方法来获取设备自己的IP地址,因此我不使用localho

我正在开发多个需要通过套接字相互通信的应用程序。首先,我需要他们能够在本地主机上进行通信。因此,当我在手机上同时运行这两个功能时,它们可以进行通信(我知道在同一部手机上有更简单的方法,但将来它们将在不同的手机上运行)

我的套接字通信代码与此非常相似:

不同之处在于,我的应用程序将此作为前台服务运行

我已经将客户端上服务器的ip设置为127.0.0.1,但它们无法连接(不在模拟器中,也不在真实手机上)。我错过了什么

更新: 我找到了一种简单的方法来获取设备自己的IP地址,因此我不使用localhost(使用www.google.com域):


也许这不太好,但它可以工作。

您需要设置每个设备的本地IP地址,以便它们可以在您的局域网内通信。因此,请使用类似192.168.1.X的地址。如果您以虚拟或物理方式运行设备,您可能很容易知道它们访问路由器web界面并查看绑定的IP的本地IP地址。

是的,但是没有通用的解决方案吗?我的意思是,我可能必须在其他网络上演示这一点,我真的不想每次都手动设置IP:(.恐怕没有。实现这一点的唯一方法是让设备同时具有公共IP和静态IP。实现这一点的其他方法(尽管我不知道这是否适合您的实现)正在使用Google Cloud Messaging,其中您有一个服务器,可以向所有注册到您服务器的设备发送消息。因此,这样您就不用使用IP,而是依赖于Google的已注册设备列表。这里有更多信息:好的,谢谢您的提示。我可能通过WifiManager或类似的方式获得当前IP地址如果我手动添加IP tho,它会起作用,所以你会得到一个投票:)“我的代码…非常类似于…”导致很多假设,并且经常会出现完全遗漏的问题=>发布你的代码。如果唯一的“区别是我的应用程序正在作为前台服务运行”,那么您的代码应该是相同的,因为您没有在代码中设置运行模式。为了通过套接字与任何设备通信,双方都需要知道彼此的IP地址才能连接。我没有添加代码的原因是,我的问题实际上并不涉及它,因为我知道它应该可以工作(你可以在链接上看到,这没什么大不了的)。我只是问是否有一种方法可以获得用于套接字通信的环回IP或本地主机,但似乎没有简单的方法。