简单 java 聊天程序无法在 Mac 上运行

Simple java chat program doesn't work on Mac

我制作了一个简单的 java 聊天程序,它将有 1 个服务器和 1 个客户端。它在 windows 上工作正常,它可以在局域网内互相聊天。 但是当我在 Mac 电脑上尝试时,它不起作用。在服务器程序中,如果它正常工作,当我按下开始按钮时它应该会冻结,并等待客户端加入。但是在 Mac 中,当我按下开始按钮时它什么也不做。该程序不会冻结,就像单击非编码按钮一样。 Mac 中的客户端也无法加入服务器(Windows 中托管的服务器)。

在 Windows 上:启动服务器 --> 冻结(等待客户端)--> 客户端加入 --> 可以聊天

在 Mac 上:启动服务器 --> 不冻结,就像单击普通按钮一样 --> 客户端单击加入 --> 没有任何反应

在“启动服务器”按钮中:

private void startsvbtnActionPerformed(java.awt.event.ActionEvent evt) {                                           
    try {
        // TODO add your handling code here:
        server = new ServerSocket(7430);
        client = server.accept();
        System.out.println("Client request accepted: "+client.getOutputStream());
        dos = new DataOutputStream(client.getOutputStream());
        dis = new DataInputStream(client.getInputStream());
        ReceiveMessage serverThread = new ReceiveMessage(dis,textarea);
        serverThread.start();
    } catch (IOException ex) {
        System.out.println("No client available");
    }

}         

因为你的按钮没有冻结,所以我会说问题是抛出异常,因此你的 ActionListener 几乎立即返回。

检查您的日志文件以查看您的日志消息 System.out.println("No client available"); 是否存在。同样至少修改此代码以输出堆栈跟踪,因为我敢打赌您不能绑定到此处指定的端口:

server = new ServerSocket(7430);

您只检查了 IOException,根据文档,可能还有其他异常。捕获所有并打印堆栈跟踪。 http://docs.oracle.com/javase/8/docs/api/java/net/ServerSocket.html#accept--

catch(Exception e){
e.printStackTrace();
}