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

时间:2015-05-01 04:52:08

标签: java macos serversocket

我制作了一个简单的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");
    }

}         

2 个答案:

答案 0 :(得分:0)

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

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

server = new ServerSocket(7430);

答案 1 :(得分:0)

您只检查IOException,根据doc,可能还有其他例外情况。抓住所有并打印堆栈跟踪。 http://docs.oracle.com/javase/8/docs/api/java/net/ServerSocket.html#accept--

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