bugfixes TCP (ter)

This commit is contained in:
Louis Farina 2021-01-12 18:21:01 +01:00
parent 4fe854e2f5
commit fbf236692a

View file

@ -51,14 +51,16 @@ import chat.Message;
//}
class ReceiveThread extends Thread {
User user;
Socket socket;
JTextArea displayArea;
JTextArea knownUsersPanel;
List<User> known_users;
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;
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<User> known_users;
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;
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