bugfixes TCP (ter)

这个提交包含在:
Louis Farina 2021-01-12 18:21:01 +01:00
父节点 4fe854e2f5
当前提交 fbf236692a

查看文件

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