bugfixes TCP (ter)
This commit is contained in:
parent
4fe854e2f5
commit
fbf236692a
1 changed files with 22 additions and 8 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue