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
Java 如何利用通过不同wifi连接到internet的ip地址连接客户端和服务器?_Java_Sockets_Network Programming_Ip Address_Serversocket - Fatal编程技术网

Java 如何利用通过不同wifi连接到internet的ip地址连接客户端和服务器?

Java 如何利用通过不同wifi连接到internet的ip地址连接客户端和服务器?,java,sockets,network-programming,ip-address,serversocket,Java,Sockets,Network Programming,Ip Address,Serversocket,我使用笔记本电脑作为服务器,移动设备作为客户端。我需要在他们之间发送消息。我可以通过使用笔记本电脑的本地ip地址并将它们连接到同一个wifi网络来做到这一点。但是如果我需要发送消息,尽管它们通过不同的wifi网络连接到不同的互联网,我如何使用ip地址呢。 这是客户端中的代码: client = new Socket("192.168.0.103", 4444); //local ip address of server 这是服务器中的代码: serverSocket = new Server

我使用笔记本电脑作为服务器,移动设备作为客户端。我需要在他们之间发送消息。我可以通过使用笔记本电脑的本地ip地址并将它们连接到同一个wifi网络来做到这一点。但是如果我需要发送消息,尽管它们通过不同的wifi网络连接到不同的互联网,我如何使用ip地址呢。 这是客户端中的代码:

 client = new Socket("192.168.0.103", 4444); //local ip address of server
这是服务器中的代码:

serverSocket = new ServerSocket(4444);  //Server socket
clientSocket = serverSocket.accept();   //accept the client connection
inputStreamReader = new InputStreamReader(clientSocket.getInputStream());
bufferedReader = new BufferedReader(inputStreamReader); //get the client message
String input=bufferedReader.readLine();

我可以使用网关或动态或静态ip来解决此问题吗?如果是,如何配置?

您需要在服务器端配置调制解调器/路由器,以便(从客户端移动)到端口4444的外部呼叫将重定向到子网中的正确设备

这是必须在路由器上手动完成的配置更改。此外,并非所有路由器都支持服务重定向功能(但大多数路由器都支持)。即使路由器支持它,有时也很难找到正确的方法,因为不同型号的路由器可能有不同的名称

通常,即使有一个设备连接到路由器,您也必须这样做

在某些安装中,路由器和模型是两个不同的物理设备,但您也可以在单个设备中找到这两个功能的结合。如果您具有将多个设备连接到调制解调器的功能,那么您的调制解调器也可能提供路由功能。然而,我记得在过去看到过一些调制解调器,对于这些调制解调器,无法将外部服务调用重定向到特定设备(或者至少,我个人从未发现如何对这些型号执行此操作)

如果你的网络有一个单一的路由器-就像在大多数家庭安装;那么网关和路由器之间就没有真正的区别了。但是,如果您的服务器位于具有多个路由器的复杂本地网络上,则很难正确配置整个网络;特别是当你进行安全检查时


因此,如果您在家,您应该查阅wify设备的文档,或者让公司网络负责人进行配置。

您的问题实际上不是编程问题。您的问题是路由器的配置。当您在同一网络中时,可以使用内部IP。当您在不同的网络中时,需要指定两个网络的公共IP。我建议您将问题转移到ServerFault(),在那里,在网络方面更有经验的人将能够更好地帮助您。