【问题标题】:Socket connection not happening between computers present on two separate LAN networks两个独立 LAN 网络上的计算机之间没有发生套接字连接
【发布时间】:2015-03-20 13:18:55
【问题描述】:

我正在尝试分别在两个单独的 LAN 网络上的两台计算机之间建立套接字连接。所以这就是我的两台计算机的设置方式。我的 MacBook 位于路由器 IP 为 121.245.152.106 的网络上。我的戴尔 PC 位于路由器 IP 为 27.4.193.156 的网络上。

我使用我的 MacBook 作为我的服务器。此代码将只接受来自客户端(戴尔 PC)的套接字连接,并将打印它的 IP 地址。这段代码出现在我的 MacBook 上:

LolServer.java:

import java.io.*;
import java.net.*;



public class LolServer {

    public static void main(String[] args) throws IOException {

        ServerSocket server = new ServerSocket(8080); // ServerSocket listening to port 8080 
        Socket socket = server.accept();
       
        System.out.println(socket.getInetAddress().getHostAddress()); // Printing the client IP address.  
       
        socket.close();
        server.close();
    }
}  

当我

telnet 192.168.1.102 8080 
// or 
telnet 127.0.0.1 8080

在我的本地机器(MacBook)上,代码工作正常,LolServer 程序打印

192.168.1.102
// or 
127.0.0.1

分别作为其输出。这里,192.168.1.102 是路由器提供的我的 MacBook 的本地/私有 IP 地址,IP 为 121.245.152.106

现在问题就在这里。当我尝试从远程网络(即我的戴尔 PC)访问该程序时,telnet 命令一直在搜索服务器并且不打印任何输出。

这是我从客户端尝试的:

telnet 121.245.152.106 8080  

这没有输出。它甚至不会在我的 Macbook 上打印任何输出。我想我的插座甚至没有连接。 121.245.152.106 是用于连接我的戴尔 PC 的 IP 吗?这样做没有意义:

telnet 192.168.1.102 8080  

192.168.1.102 是私有 IP 地址。

请帮助我,我真的需要让这个工作。提前致谢。

【问题讨论】:

  • 我不会假装我在这里知道太多,但也许你需要转发?你的代码似乎没有问题,所以我最好的猜测是需要防火墙/端口转发。
  • 您需要提供实时 IP。并且还需要转发
  • 是的。 IP是活的。我将如何进行端口转发?我还是个学生。
  • 你需要在你的路由器中配置这个东西
  • 查找 NAT/DNAT。您需要在路由器上将端口 8080 从 WAN 端(公共 IP)转发到 LAN 端(192.168.x.x)

标签: java sockets networking


【解决方案1】:

端口转发,有时也称为端口触发,是配置路由器以使与其连接的计算机或网络设备可以从本地网络外部的其他计算机和网络设备访问的过程。

来源:https://m.youtube.com/watch?v=-K6jMYBfuIY

这意味着您的路由器正在阻止连接。第一次进行端口转发也很棘手,而且有点超出我的指导能力。这里有一个很好的网站可以帮助你:http://portforward.com/english/routers/port_forwarding/基本上你选择你的路由器,网站会根据你的路由器教你。

【讨论】:

  • 我不能在没有访问路由器的情况下这样做吗?我的意思是,Skype、ms Outlook 等应用程序确实与他们的服务器通信。我不能这样做吗?
  • 您需要访问您的路由器。我不这么认为,除非我弄错了,否则还有其他出路。
  • 这可能是个问题。我想我登录 hamachi 可以工作,但我不会太热衷于这种方法。
  • 实际上在这种情况下,我的客户端 PC 知道我的服务器 PC 的动态 IP(实际上我的朋友坐在 MacBook 上)。但是像Skype这样的应用程序确实与他们的服务器通信。他们不需要任何端口转发。还是他们?
  • 登录我使用网络隧道与其他客户端交谈。如果未转发原始套接字,它们将无法通过。 Skype 使用一种称为打孔的技术。在“打孔防火墙”下谷歌它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2021-07-21
相关资源
最近更新 更多