做一个简单的聊天系统服务器
服务器中有一个输入端口的控件,两个JButton按钮“停止”和“运行”
点击“运行”按钮,启动服务器
点击“停止”按钮,调用ServerSocket的close方法,停止服务器。

上部分代码:
btn_ok.setText("运行");
btn_ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
String strPort = port.getText().trim();
try {
serverSocket = new ServerSocket(Integer.parseInt(strPort));
System.out.println("服务器已启动");
btn_ok.setEnabled(false);
} catch (NumberFormatException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//消息分发
new Thread(new MsgRunnable()).start();
}
btn_quit.setText("停止");

本文探讨了一个简单的聊天系统服务器的实现,重点在于如何通过点击按钮控制服务器的启停。在尝试使用ServerSocket的close方法停止服务器时,遇到了Socket关闭异常。问题的关键在于ServerSocket的accept方法在等待客户端连接时会阻塞,当另一线程关闭ServerSocket时,accept方法会抛出异常。这个问题虽然简单,但却花费了一定时间来解决。
796

被折叠的 条评论
为什么被折叠?



