【问题标题】:How to connect client and server with the help of ip address which are connected to internet through different wifi?如何借助通过不同wifi连接到互联网的IP地址连接客户端和服务器?
【发布时间】:2013-02-28 14:00:47
【问题描述】:

我使用笔记本电脑作为服务器,使用移动设备作为客户端。我需要在他们之间发送消息。我可以通过使用笔记本电脑的本地 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 来解决这个问题吗?如果有怎么办?

【问题讨论】:

  • 你的问题真的不是编程问题。你的问题是路由器的配置。当您在同一个网络中时,您可以使用您的内部 IP。当您在不同的网络中时,您需要指定两个网络的公共 IP。我建议您将问题移至 ServerFault (serverfault.com/?as=1),在那里更有网络经验的人将能够更好地帮助您。

标签: java sockets network-programming ip-address serversocket


【解决方案1】:

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

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

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

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

如果您的网络只有一个路由器 - 就像大多数家庭安装一样;那么网关和路由器之间没有真正的区别。但是,如果您的服务器位于具有多个路由器的复杂本地网络上,那么正确配置整个网络会变得非常困难;尤其是当您进行安全检查时。

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

【讨论】:

    猜你喜欢
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多