From 4fe854e2f574d978c70017da0ed815bac1d25494 Mon Sep 17 00:00:00 2001 From: Metatheria Date: Tue, 12 Jan 2021 18:08:16 +0100 Subject: [PATCH] bugfixes TCP (bis) --- src/chat/ClientWindow.java | 2 +- src/chat/NetworkClient.java | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/chat/ClientWindow.java b/src/chat/ClientWindow.java index 9f96f1b..3213c4d 100644 --- a/src/chat/ClientWindow.java +++ b/src/chat/ClientWindow.java @@ -67,7 +67,7 @@ public class ClientWindow implements ActionListener { messageField.addActionListener(this); chatWindow.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { - network.send(null); + network.disconnect(); } }); diff --git a/src/chat/NetworkClient.java b/src/chat/NetworkClient.java index 7c04b6d..92de208 100644 --- a/src/chat/NetworkClient.java +++ b/src/chat/NetworkClient.java @@ -103,6 +103,7 @@ class ReceiveThread extends Thread { } socket.close(); + dest_sockets.remove(socket); } catch(Exception e) { @@ -154,6 +155,7 @@ class ConnectionListenerThread extends Thread { InetAddress clientAddress= request.getAddress(); System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress()); + response = ""; for(User u:known_users) { response += u.getName() + " "; @@ -165,7 +167,7 @@ class ConnectionListenerThread extends Thread { response += s.getInetAddress().getHostAddress() + " "; } response = response.trim(); - System.out.println("Response :" + response); + System.out.println("Response :" + response + "!"); responseBytes = response.getBytes(); responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337); responseSocket.send(responsePacket); @@ -388,4 +390,17 @@ public class NetworkClient { catch(IOException e){} } } + + void disconnect() + { + send(null); + for(Socket s:dest_sockets) + { + try + { + s.close(); + } + catch(IOException e){} + } + } }