在两个单独的LAN网络上存在的计算机之间不发生套接字连接

时间:2015-03-20 13:18:56

标签: java sockets networking

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

我正在使用MacBook作为我的服务器。此代码只接受来自客户端(Dell 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的路由器提供。

现在这就是问题所在。当我尝试从远程网络(即从我的Dell 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地址。

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

1 个答案:

答案 0 :(得分:1)

  

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

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

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