これはシンプルなTCPサーバーです。プログラムが終了したら、どうすればソケットを閉じることができますか? 私はtry/finallyを使い、ソケットを閉じようとしています。しかし、プログラムを終了するとfinallyブロックが実行されません。どのようにして適切な方法でソケットを閉じることができますか?
誰でも適切な方法でソケットを閉じる方法を知ることができますか?
try {
socket = new ServerSocket(port);
System.out.println("Server is starting on port " + port + " ...");
}catch (IOException e){
System.out.println("Error on socket creation!");
}
Socket connectionSocket = null;
try{
while(true){
try{
connectionSocket = socket.accept();
Thread t = new Thread(new ClientConnection(connectionSocket));
t.start();
}catch (IOException e) {
System.out.println("Error on accept socket!");
}
}
}finally{
this.socket.close();
System.out.println("The server is shut down!");
}
コールソケット '近い()'メソッド。 http://www.javacodegeeks.com/2011/07/java-7-try-with-resources-explained.html –
また、 'ServerSocket'コンストラクタがサーバをスローする場合に' close() 'を呼び出す前にヌルチェックが必要です。例外。 – unholysampler
@Kit Ho、アプリケーションはどのように終了しましたか? – mre