0

我正在学习 Java,并尝试制作一个简单的客户端-服务器应用程序。我的服务器有 GUI,还有一个启动服务器的按钮。单击它后,将启动另一个线程。我称它为主服务器线程,因为它处理连接并处理客户端。我也有关闭服务器的按钮,但没有关闭整个应用程序。我关闭 ServerSocket 来中断这个线程,这样我就可以停止服务器。我希望消息对话框弹出 inf finally 块来通知我服务器停止运行。这是服务器运行方法的一些简化和修改的代码:

public void run(){
    try{
      JOptionPane.showMessageDialog(null,"begining");      
      ss = new ServerSocket(TCP_PORT);

    while(cont){

       Socket sock = ss.accept();
       exec.execute(new ServerThread(sock));

    }catch(SocketException soex){
      //JOptionPane.showMessageDialog(null,"SocketException");
    }finally{
      JOptionPane.showMessageDialog(null,"finally");
    }
    //JOptionPane.showMessageDialog(null,"after finally");
  }

第一个消息对话框正确显示,但是当其他 3 个对话框中的一些由于异常弹出时,我只得到带有标题和窗口边框的灰色消息对话框,但没有消息或任何按钮。我无法关闭它,我无法关闭我的应用程序。它卡在那里。

我使用的是 Ubuntu,它使用 open-jdk javac 版本“1.7.0_25”编译,并使用相同版本的 java 运行它。我还尝试了 1.6 版,以及 Oracle 1.7.0_25(java 和 javac)。每次我得到相同的结果。

这里有什么问题,我该如何解决?

4

1 回答 1

3
于 2013-08-15T09:42:26.107 回答