0

我有这个多服务器线程,所以每当点击右上角的“X”按钮时,我想在服务器端显示“关闭套接字”消息。

public void run
{

  try
  {
    // .....
     String inputLine, outputLine;
    Protocol p = new Protocol();
    outputLine = p.processInput(null, p);
    out.println(outputLine);

   while ((inputLine = in.readLine()) != null) {
    outputLine = p.processInput(inputLine,p);
    out.println(outputLine);
    if (outputLine.equals("Bye"))
            {
                System.out.print("Closing socket.");
                break;
            }
    }


    out.close();
    in.close();
    socket.close();
 catch (IOException e)
 {
    // .....
  }

}

public String processInput(String theInput, Protocol p) 
 {
     theOutput = null;


     frame = new JFrame ("Find The Word!");
      frame.addWindowListener( new WindowAdapter()
    {
        public void windowClosing(WindowEvent e)
        {
              theOutput = "Bye";
        }
    });

    frame.add(p);
    frame.pack();

    frame.setVisible(true);





    return theOutput;
} 

但它不起作用,我必须手动结束服务器端的进程。我认为它卡在了while循环中,但我无法弄清楚它有什么问题。

4

1 回答 1

0

假设您无法诱导服务器向您发送 Bye 消息,您可以退出循环,就好像它已向您发送了 Bye 消息或从另一个线程关闭套接字。

于 2013-05-17T06:52:32.807 回答