Java 客户端服务器在同一台计算机上连接,但在不同计算机上运行时不连接

Java 客户端服务器在同一台计算机上连接,但在不同计算机上运行时不连接,java,sockets,networking,client-server,Java,Sockets,Networking,Client Server,我正在尝试构建一个基本的客户机-服务器应用程序。 当我在同一台计算机上运行服务器和客户机时,两者都能顺利连接,但如果我尝试从不同的计算机(台式机和笔记本电脑)进行连接,则无法实现连接。当客户端在一段时间后超时时,服务器甚至不知道有人试图连接到它。起初我认为这是一个防火墙问题,但在服务器PC上完全禁用防火墙并没有帮助。尝试更改端口并在多台计算机上检查。你知道这是什么原因吗? 我同时控制服务器和客户机,并可以在必要时更改两者的代码。服务器总是在同一台电脑上运行,我使用硬编码的IP地址直接连接到它。

我正在尝试构建一个基本的客户机-服务器应用程序。 当我在同一台计算机上运行服务器和客户机时,两者都能顺利连接,但如果我尝试从不同的计算机(台式机和笔记本电脑)进行连接,则无法实现连接。当客户端在一段时间后超时时,服务器甚至不知道有人试图连接到它。起初我认为这是一个防火墙问题,但在服务器PC上完全禁用防火墙并没有帮助。尝试更改端口并在多台计算机上检查。你知道这是什么原因吗? 我同时控制服务器和客户机,并可以在必要时更改两者的代码。服务器总是在同一台电脑上运行,我使用硬编码的IP地址直接连接到它。 这是客户端向服务器发送随机int的代码

public static void main(String[] args) {
    Socket s = new Socket();
    try {
        s.connect(new InetSocketAddress("123.45.67.891", 8084), 5000);
        s.getOutputStream().write(42);
        s.close();
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }   
}
服务器稍微复杂一些,但考虑到它们在同一台PC上运行时能够连接,我认为问题不在于它

编辑:服务器代码(每个客户端的线程数。这些线程数不应该太多)

初始化包括以下内容(后者用于I/O)


但问题可能出在服务器端:您必须使用构造函数使其响应所有ip,而不仅仅是本地ip:

ServerSocket(int port) 

它将默认接受任何地址上的连接,如果您指定了IP,则情况并非如此。检查两者是否在同一子网中。还要尝试从两端ping地址,以确保它们是可ping的。您能否至少发布创建serversocket的行的代码?
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
out = new PrintWriter(clientSocket.getOutputStream(), true);
ServerSocket(int port)