То, что я пытаюсь достичь, заключается в том, что с моей программой пользователь может загружать файл столько раз, сколько захочет, а когда они нажимают кнопку закрытия, то я хочу закрыть или прекратите соединение сокета, но когда я снова запустил GUI, соединение все еще там, хотя я еще не запустил его.Сохраняйте SocketServer до тех пор, пока рамка не будет закрыта.
while (true) { // >>>>>>>HERE IS MY PROBLEM<<<<<<<
try{
connectionSocket = welcomeSocket.accept();
inFromClient = new BufferedReader(new InputStreamReader(
connectionSocket.getInputStream()));
outToClient = new DataOutputStream(
connectionSocket.getOutputStream());
//Do something here.....
}catch(IOException e){ }
}
Так что, если я держу некоторое время (истина), то соединение будет остаться в живых, но несмотря на то, когда я закрыл раму уже ее еще подключения.
Я метод @Override для окна закрыты здесь
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent b) {
if(socket != null){
try {
socket = new Socket(hostIP, port);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
try {
if (socket != null) {
socket.close();
socket = null;
}
}
catch (IOException e) { socket = null; }
ftoc.dispose();
}
});
Возможный дубликат [Как сохранить розетку до тех пор, пока окно не будет закрыто Java] (h ttp: //stackoverflow.com/questions/16124899/how-to-keep-the-socket-alive-until-the-window-is-close-java) – fglez