无法使用不同网络中的两台PC将套接字连接到服务器套接字

kq4fsx7k  于 2021-07-05  发布在  Java
关注(0)|答案(0)|浏览(247)

说明

目标是让服务器在我的计算机上运行,而另一个人在另一个网络中的计算机上运行客户机
这应该使用 Socket 以及 ServerSocket 来自 java.net Package 。
预期输出是服务器和客户端之间的连接
实际输出没有连接

源代码:

注意:提供了连接所需的最少代码量,去掉了不必要的打印/日志语句和其他代码,以使ui/应用程序按预期运行。
服务器.java:

class Server {
    ServerSocket server;
    Socket connection;
    final int PORT = 0xface    // random port

    public static void main(String[] args) {
        Server application = new Server();    // constructor is just for UI
        application.runServer();
    }

    private runServer() {
        server = new ServerSocket(PORT, 5);
        connection = server.accept();
    }
}

客户端.java

class Client {
    String charServerAddress;
    final int PORT = 0xface    // random port, same as Server port

    public static void main(String[] args) {
        Client application = new Client(args[0]);  // where args[0] is 127.0.0.1
        application.runClient();
    }

    public Client(String host) {chatServerAddress = host;}

    private runClient() {
        client = new Socket(InetAddress.getByName(chatServerAddress), PORT);
    }
}

结果

服务器正常运行,但客户端无法连接

在解决问题之前

客户端连接到localhost,即使用 127.0.0.1 作为论据 client = new Socket(InetAddress.getByName(chatServerAddress), PORT) .
事情按预期进行;客户端可以连接到服务器。
客户端使用服务器的ip地址连接,服务器与客户端运行在同一台计算机上。我们输入了服务器的ip地址 ipconfig ,然后使用 IPv4 Address .
事情按预期进行;客户端可以连接到服务器。
客户端使用服务器的ip地址连接,服务器和客户端在不同的机器上运行。我们得到了服务器的ip地址 ipconfig ,然后使用 IPv4 Address .
问题:没有错误消息,但是客户端从未连接到服务器。

尝试的解决方案

在两台计算机上完全禁用windows防火墙。
切换哪台机器托管服务器,哪台是客户端。
使用不同的 PORT 号码。
通过打字将一台机器与另一台机器进行ping ping <IP Address> 在命令中。
以上所有操作都会导致相同的错误: connection timeout .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题