以下に示すようにサーバーを実装しました。接続されているクライアントに「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();
}
}
}