diff --git a/src/chat/NetworkClient.java b/src/chat/NetworkClient.java index 92de208..c3d16d9 100644 --- a/src/chat/NetworkClient.java +++ b/src/chat/NetworkClient.java @@ -51,14 +51,16 @@ import chat.Message; //} class ReceiveThread extends Thread { + User user; Socket socket; JTextArea displayArea; JTextArea knownUsersPanel; List known_users; List dest_sockets; - ReceiveThread(Socket in_socket, JTextArea in_displayArea, List in_known_users, JTextArea in_knownUsersPanel, List in_dest_sockets) + ReceiveThread(User in_user, Socket in_socket, JTextArea in_displayArea, List in_known_users, JTextArea in_knownUsersPanel, List in_dest_sockets) { + user = in_user; socket = in_socket; displayArea = in_displayArea; knownUsersPanel = in_knownUsersPanel; @@ -97,13 +99,17 @@ class ReceiveThread extends Thread { { knownUsersPanel.append(" " + u.getName() + " \n"); } + if(!message.getAuthor().equals(user.getName())) + { + socket.close(); + dest_sockets.remove(socket); + } exit = true; } displayArea.setCaretPosition(displayArea.getDocument().getLength()); } - socket.close(); - dest_sockets.remove(socket); + } catch(Exception e) { @@ -113,13 +119,15 @@ class ReceiveThread extends Thread { } class ConnectionListenerThread extends Thread { + User user; JTextArea displayArea; JTextArea knownUsersPanel; List known_users; List dest_sockets; - ConnectionListenerThread(List in_known_users, List in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel) + ConnectionListenerThread(User in_user, List in_known_users, List in_dest_sockets, JTextArea in_displayArea, JTextArea in_knownUsersPanel) { + user = in_user; known_users = in_known_users; dest_sockets = in_dest_sockets; displayArea = in_displayArea; @@ -180,7 +188,7 @@ class ConnectionListenerThread extends Thread { if(accepted) { Socket s = (new ServerSocket(1237+(known_users.size()))).accept(); - (new ReceiveThread(s, displayArea, known_users, knownUsersPanel, dest_sockets)).start(); + (new ReceiveThread(user, s, displayArea, known_users, knownUsersPanel, dest_sockets)).start(); dest_sockets.add(s); known_users.add(new User(username)); @@ -313,7 +321,7 @@ public class NetworkClient { { Socket s = new Socket(a, (1237+usernameList.length)); dest_sockets.add(s); - (new ReceiveThread(s, chatText, known_users, knownUsersPanel, dest_sockets)).start(); + (new ReceiveThread(user, s, chatText, known_users, knownUsersPanel, dest_sockets)).start(); } Collections.sort(known_users); connected = true; @@ -341,7 +349,7 @@ public class NetworkClient { if(connected) { - (new ConnectionListenerThread(known_users, dest_sockets, chatText, knownUsersPanel)).start(); + (new ConnectionListenerThread(user, known_users, dest_sockets, chatText, knownUsersPanel)).start(); try { @@ -349,7 +357,7 @@ public class NetworkClient { (new ListenerStartThread(s1, dest_sockets)).start(); Socket s2 = new Socket("25.67.234.235", 1237+(known_users.size())); - (new ReceiveThread(s2, chatText, known_users, knownUsersPanel, dest_sockets)).start(); + (new ReceiveThread(user, s2, chatText, known_users, knownUsersPanel, dest_sockets)).start(); } catch(IOException e) { @@ -394,6 +402,12 @@ public class NetworkClient { void disconnect() { send(null); + try + { + Thread.sleep(1000); + } + catch(InterruptedException e) {} + for(Socket s:dest_sockets) { try