Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
Android 向路由器发送消息';谁的IP地址?_Android_Sockets_Ip Address_Router - Fatal编程技术网

Android 向路由器发送消息';谁的IP地址?

Android 向路由器发送消息';谁的IP地址?,android,sockets,ip-address,router,Android,Sockets,Ip Address,Router,我正在尝试制作一个Android应用程序,它应该通过两个客户端的IP地址在两个客户端之间发送消息 我目前有一个设置,使服务器能够在后台运行,侦听传入的消息,其地址是设备的IP地址。但是,除非两台设备都连接到同一网络,否则我无法访问此服务器 我想知道是否有办法将消息发送到路由器,然后路由器将通过其端口号或其他说明符将消息发送到指定的设备,而不是直接将消息发送到设备的IP地址 我一直在搜索,发现一些即时消息程序有类似的设置,我读到NetSend在以前的Windows版本中也做过类似的工作。不过,我还

我正在尝试制作一个Android应用程序,它应该通过两个客户端的IP地址在两个客户端之间发送消息

我目前有一个设置,使服务器能够在后台运行,侦听传入的消息,其地址是设备的IP地址。但是,除非两台设备都连接到同一网络,否则我无法访问此服务器

我想知道是否有办法将消息发送到路由器,然后路由器将通过其端口号或其他说明符将消息发送到指定的设备,而不是直接将消息发送到设备的IP地址

我一直在搜索,发现一些即时消息程序有类似的设置,我读到NetSend在以前的Windows版本中也做过类似的工作。不过,我还没有找到任何与在Android上进行此操作相关的内容。在这一点上,我只想知道这是否可行,是否有人能指引我正确的方向。我只是不确定这个想法是否可行。
我希望尽我最大的努力不让所有消息都发送到一个专用服务器,然后服务器从那里适当地分发消息。我宁愿让每个设备在后台运行其独立的服务器,以便可以从全球任何其他设备访问它。

实现这一点的一种方法是在路由器上为承载此应用程序的服务器设置端口转发


根据应用程序的工作方式,可能会出现复杂情况。如果它确实使用广播,你将无法让它像你描述的那样工作。如果应用程序使用IP地址和端口,则服务器路由器上的端口转发可能会工作,但您可能需要调整保护服务器的任何防火墙中的设置。

我感谢您的响应,但服务器将不是处理所有通信请求的单一专用服务器。服务器是传入通信请求的后台侦听器,这些请求在将运行应用程序的每个设备上独立运行。因此,在安装应用程序的每个设备上都不可能设置端口转发。我认为解决方案可能是将消息发送到设备的公共ip地址以及私有ip地址,以便路由器可以将消息定向到指定的设备?或者,这不仅仅是一个简单的应用程序的工作吗?如果你在不同的网络上有一堆设备隐藏在NAT后面,那么实现这一工作的唯一方法就是有一个中央服务器,每个设备都与之连接。您无法控制每个远程设备可能拥有的所有NAT路由器和防火墙,但您可以使用单个服务器控制站点上的NAT路由器和防火墙。托管服务对于这样的事情来说是理想的。我知道一台带有端口转发的服务器或多或少是实现这一点的理想方式。我只需要说服我制作这个应用程序的人,因为他坚持不让所有这些都从一台服务器上运行。谢谢你的帮助。当我收集更多信息时,我会回来更新。