为什么我无法从 Java 中的两台 PC 连接我的插座?

Why I can't connect my sockets from two PCs in Java?

到目前为止,我已经通过并行地 运行 不同 java class 在同一台计算机上建立 server/client 关系 es。因为我不想让这个问题过于复杂,所以我将 post 我的简化代码,它工作得很好。

服务器:

public class Server {
    public static final int PORT = 9090;

    public static void main (String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket (PORT);
            Socket client = serverSocket.accept ();
            System.out.println ("Client connected!");
        } catch (IOException ioException) {
            ioException.printStackTrace ();
        }
    }

}

客户:

public class Client {
        public static final int PORT = 9090;
        public static final String IP_ADDRESS = "127.0.0.1";

    public static void main (String[] args)  {
        try {
            Socket socket = new Socket (IP_ADDRESS,PORT);

        } catch (IOException ioException) {
            ioException.printStackTrace ();
        }
    }

}

在我 运行 他们之后,我得到了预期的输出 - class Server 中的控制台打印 “客户端已连接!”.

像任何其他好奇的程序员一样,我决定在我的两台笔记本电脑上试用相同的程序。一台笔记本电脑有 客户端代码 ,而第二台有 服务器代码 。当然,我必须将 "127.0.0.1""localhost" 更改为 ip 地址我的 server laptop 通过键入 google "what is my IP address" 获得。我刚刚将 新 IP 地址 复制到 IP_ADDRESS 变量中,并希望它也能正常工作。不幸的是,它没有发生。我的 客户端笔记本电脑 看起来好像从未连接到 服务器笔记本电脑 ,因为 服务器笔记本电脑 从未打印消息 “客户端已连接!”。我错过了什么?它看起来很容易,但它不起作用。有人可以帮我解决这个问题吗?

P.S。出于隐私原因,我不想分享我的 IP 地址,但当你们google:我的 IP 地址是什么?[时,它是第一个弹出的数字。 =16=]

如果您在本地网络上,则不必使用 public IP。你需要找到你的本地 IP(如果你在 linux,一个简单的“ip a”,你就会有你的 IP 地址,if you are on windows ) 如果您不在本地网络上,您可以打开路由器的设置以打开 9090 端口,但出于安全原因,我强烈不鼓励您这样做。