1

以下に示すようにサーバーを実装しました。接続されているクライアントに「GoodBye」メッセージを吐き出すというアイデアです。私の問題は、whileループがあることです。 ^C) ソケットを閉じたい。どうすればその状況に対処できますか.Finallyはそれをしません.

import java.net.*;
import java.io.*;

public class GreetingServer extends Thread
{
   private ServerSocket serverSocket;

   public GreetingServer() throws IOException
   {
      serverSocket = new ServerSocket(5063);
      serverSocket.setSoTimeout(0);
   }

   public void run()
   {
      Socket server = null;
      try
      {
      server = serverSocket.accept();
      }
      catch(SocketTimeoutException s)
      {
          System.out.println("Socket timed out!");
      }
      catch(IOException e)
      {
          e.printStackTrace();
      }

      while(true)
      {
         try
         {
            System.out.println("Just connected to "
                                + server.getRemoteSocketAddress());

            DataOutputStream out = new DataOutputStream(server.getOutputStream());

            out.writeUTF("\nGoodbye!");
         }
     catch(SocketTimeoutException s)
         {
            System.out.println("Socket timed out!");
         }
     catch(IOException e)
         {
            e.printStackTrace();
         }
     finally
     {
        try
            {
               server.close();  
            }
        catch (IOException e)
            {
          e.printStackTrace();
            }
    }
      }

   }
   public static void main(String [] args)
   {
      try
      {
         Thread t = new GreetingServer();
         t.start();
      }
      catch(IOException e)
      {
         e.printStackTrace();
      }
   }
}
4

1 に答える 1

5

JVMがシャットダウンするたびに実行されるシャットダウン フックJVMにアタッチできます。

クイック グーグルで始められます。

于 2013-07-27T09:07:02.420 に答える