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