To jest prosty serwer TCP. Jak mogę zamknąć gniazdo po zakończeniu programu? Używam try/finally i spróbuj zamknąć gniazdo. Ale nie kończy bloku finally, kiedy wyjdę z programu.Jak mogę zamknąć gniazdo w prawidłowy sposób?
Ktoś może wiedzieć, jak zamknąć gniazdo w prawidłowy sposób?
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!");
}
połączenia gniazda 'close()' w swój sposób ostatecznie zablokować lub obecnie z Java 7 można użyć try-with-blok zasobów i będzie zamknąć je dla Ciebie. http://www.javacodegeeks.com/2011/07/java-7-try-with-resources-explained.html –
Musisz również sprawdzić wartość NULL przed wywołaniem 'close()' na wypadek, gdyby konstruktor 'ServerSocket' wyrzucił wyjątek. – unholysampler
@Kit Ho, Jak kończy się aplikacja? – mre