简单的java聊天程序在Mac上不起作用



我制作了一个简单的Java聊天程序,该程序将具有1个服务器和1个客户端。它在Windows上正常工作,可以在LAN中相互聊天。但是,当我在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");
    }
}         

您只检查IOException,根据DOC,还有其他例外。捕捉全部并打印stacktrace。http://docs.oracle.com/javase/8/docs/api/java/net/net/serversocket.html#accept--

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

因为您的按钮没有冻结,我会说问题是一个例外,因此您的ActionListener几乎立即返回。

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

server = new ServerSocket(7430);

最新更新