У меня проблема с закрытием сокета, когда Java-программа завершена (по исключению или вручную). Я мог бы использовать некоторую помощь!
Я пишу программу на Java, которая использует TCP-сокет для связи с сервером.
У меня есть сокет, который используется двумя потоками - один использует его для отправки данных, а другой - для получения данных. Моя текущая идея для решения этой проблемы - закрыть сокет, в то время как поток принимающих данных умирает (я хотел бы услышать больше идей). Я не нашел способа закрыть сокет, когда поток (вся программа) завершается. Есть ли способ вызвать метод close, когда поток умирает? (Ищете что-то вроде деструктора C ++)
Iv'e пытался использовать оператор и try-finally, и это не сработало.
public class Receive implements Runnable {
....
....
public void run() {
Socket socket = getSocket() // Gets socket from a singleton class.
....
while (true){
....
readFromSocketFunction();
....
}
....
} // Would like to close the socket when going out from this scope.
....
}
Прямо сейчас, когда я завершаю программу, сокет продолжает жить. Я написал простой клиент на Python и заметил, что при прерывании клиента во время работы он все еще закрывает сокет (сервер отключается от клиента), и я хотел бы иметь такое же поведение в моей программе.
Спасибо !!