outdoor users(12)

This commit is contained in:
Louis Farina 2021-02-15 12:34:31 +01:00
parent fbad70314a
commit 972671ee8f
10 changed files with 499 additions and 426 deletions

View file

@ -134,10 +134,10 @@ public class ClientWindow implements ActionListener {
public void actionPerformed(ActionEvent event) {
String message = messageField.getText();
if(message.compareTo("") != 0)
if("".compareTo(message) != 0)
{
messageField.setText("");
network.send(message);
network.send(new Message(network.getUser(), message, false));
}
}
}

View file

@ -0,0 +1,16 @@
package chat;
public class ConnectNotification extends Notification {
private Boolean outdoor;
ConnectNotification (User in_author, Boolean in_redirected, Boolean in_outdoor)
{
author = in_author;
redirected = in_redirected;
outdoor = in_outdoor;
}
public Boolean isOutdoor()
{
return outdoor;
}
}

View file

@ -0,0 +1,136 @@
package chat;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.Collections;
import java.util.List;
import javax.swing.JTextArea;
public class ConnectionListenerThread extends Thread {
User user;
JTextArea displayArea;
JTextArea knownUsersPanel;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
int portNumber;
ConnectionListenerThread(User in_user, List<User> in_known_users, List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
JTextArea in_displayArea, JTextArea in_knownUsersPanel, int in_portNumber)
{
user = in_user;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
portNumber = in_portNumber;
}
public void run()
{
boolean exit = false;
boolean accepted = true;
boolean outdoor;
byte[] buffer = new byte[100];
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
DatagramPacket responsePacket;
DatagramSocket requestSocket;
DatagramSocket responseSocket;
String username;
String response = "";
byte[] responseBytes;
try
{
requestSocket = new DatagramSocket(1234);
responseSocket = new DatagramSocket();
while(!exit)
{
try
{
System.out.println("Waiting for connection request");
requestSocket.receive(request);
username = new String(request.getData(), 0, request.getLength());
if(username.charAt(0) == '+')
{
username = username.substring(1);
outdoor = true;
}
else
{
outdoor = false;
InetAddress clientAddress= request.getAddress();
System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress());
response = "";
for(User u:known_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(User u:known_outdoor_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(Socket s:dest_sockets)
{
response += s.getInetAddress().getHostAddress() + " ";
}
response = response.trim();
response += ";" + (portNumber+1);
System.out.println("Response :" + response);
responseBytes = response.getBytes();
responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337);
responseSocket.send(responsePacket);
}
accepted = true;
for(User a:known_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
for(User a:known_outdoor_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
if(accepted)
{
if(outdoor)
{
known_outdoor_users.add(new User(username));
Collections.sort(known_outdoor_users);
}
else
{
portNumber++;
Socket s = (new ServerSocket(portNumber)).accept();
(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, false)).start();
dest_sockets.add(s);
}
}
}
catch(SocketTimeoutException e) {}
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}

View file

@ -0,0 +1,9 @@
package chat;
public class DisconnectNotification extends Notification {
DisconnectNotification (User in_author, Boolean in_redirected)
{
author = in_author;
redirected = in_redirected;
}
}

View file

@ -0,0 +1,25 @@
package chat;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.List;
public class ListenerStartThread extends Thread {
ServerSocket s;
List<Socket> dest_sockets;
ListenerStartThread(ServerSocket in_s, List<Socket> in_dest_sockets)
{
s = in_s;
dest_sockets = in_dest_sockets;
}
public void run()
{
try
{
dest_sockets.add(s.accept());
}
catch(IOException e) {}
}
}

View file

@ -3,16 +3,13 @@ package chat;
import java.io.*;
import java.util.*;
public class Message implements Serializable{
public class Message extends Notification {
private String text;
private String author;
private Boolean redirected;
public Message(String in_author, String in_text, Boolean in_redirected)
Message (User in_author, String in_text, Boolean in_redirected)
{
text = in_text;
author = in_author;
text = in_text;
redirected = in_redirected;
}
public void setText(String new_text)
@ -23,17 +20,4 @@ public class Message implements Serializable{
{
return text;
}
public void setAuthor(String new_author)
{
author = new_author;
}
public String getAuthor()
{
return author;
}
public Boolean isRedirected()
{
return redirected;
}
}
}

View file

@ -14,387 +14,6 @@ import java.util.*;
import chat.User;
import chat.Message;
class OutdoorListenerThread extends Thread {
User user;
JTextArea displayArea;
JTextArea knownUsersPanel;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
int portNumber;
OutdoorListenerThread(User in_user, List<User> in_known_users, List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
JTextArea in_displayArea, JTextArea in_knownUsersPanel)
{
user = in_user;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
portNumber = 2344;
}
public void run()
{
boolean exit = false;
boolean accepted = true;
String notification;
String username;
String response = "";
byte[] buffer = new byte[100];
DatagramPacket notifPacket = new DatagramPacket(buffer, buffer.length);
DatagramSocket notifSocket;
byte[] notifBytes;
try
{
while(!exit)
{
try
{
ServerSocket servSocket = new ServerSocket(1233);
System.out.println("Waiting for connection request");
Socket link = servSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter(link.getOutputStream(), true);
username = in.readLine();
System.out.println("Received a request from " + username + "@" + link.getRemoteSocketAddress().toString());
response = "";
for(User u:known_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(User u:known_outdoor_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";" + (portNumber+1);
out.println(response);
accepted = true;
for(User a:known_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
for(User a:known_outdoor_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
if(accepted)
{
notification = "+" + username;
notifBytes = notification.getBytes();
notifSocket = new DatagramSocket();
notifPacket = new DatagramPacket(notifBytes, notifBytes.length, InetAddress.getByName("192.168.1.255"), 1234);
notifSocket.send(notifPacket);
portNumber++;
Socket s = (new ServerSocket(portNumber)).accept();
(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, true)).start();
outdoor_dest_sockets.add(s);
}
servSocket.close();
}
catch(SocketTimeoutException e) {}
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
class ReceiveThread extends Thread {
User user;
Socket socket;
JTextArea displayArea;
JTextArea knownUsersPanel;
Boolean isOutdoor;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
ReceiveThread(User in_user, Socket in_socket, JTextArea in_displayArea, List<User> in_known_users, List<User> in_known_outdoor_users,
JTextArea in_knownUsersPanel, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets, Boolean in_isOutdoor)
{
user = in_user;
socket = in_socket;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
isOutdoor = in_isOutdoor;
}
public void run()
{
boolean exit = false;
try
{
while(!exit)
{
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Message message = (Message) in.readObject();
if(isOutdoor)
{
for(Socket s:dest_sockets)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new Message(message.getAuthor(), message.getText(), true));
}
catch(IOException e){}
}
}
else
{
if(message.getText() != null)
{
displayArea.append(message.getAuthor() + " : " + message.getText() + "\n");
}
else
{
displayArea.append(message.getAuthor() + " has left the chat.\n");
for(int i = 0;i < known_users.size();i ++)
{
if (known_users.get(i).getName().equals(message.getAuthor()))
{
known_users.remove(i);
break;
//System.out.println("Removing " + message.getAuthor());
}
}
for(int i = 0;i < known_outdoor_users.size();i ++)
{
if (known_outdoor_users.get(i).getName().equals(message.getAuthor()))
{
known_outdoor_users.remove(i);
break;
//System.out.println("Removing " + message.getAuthor());
}
}
if(!message.isRedirected() && !message.getAuthor().equals(user.getName()))
{
socket.close();
if(!isOutdoor)
dest_sockets.remove(socket);
else
outdoor_dest_sockets.remove(socket);
}
knownUsersPanel.setText("");
knownUsersPanel.append("Indoor users:\n");
for(User a:known_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
knownUsersPanel.append("\nOutdoor users:\n");
for(User a:known_outdoor_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
}
displayArea.setCaretPosition(displayArea.getDocument().getLength());
}
if(!message.getAuthor().equals(user.getName()) && !message.isRedirected())
{
for(Socket s:outdoor_dest_sockets)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new Message(message.getAuthor(), message.getText(), true));
}
catch(IOException e){}
}
}
}
}
catch(EOFException e) {}
catch(Exception e)
{
e.printStackTrace();
}
}
}
class ConnectionListenerThread extends Thread {
User user;
JTextArea displayArea;
JTextArea knownUsersPanel;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
int portNumber;
ConnectionListenerThread(User in_user, List<User> in_known_users, List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
JTextArea in_displayArea, JTextArea in_knownUsersPanel, int in_portNumber)
{
user = in_user;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
portNumber = in_portNumber;
}
public void run()
{
boolean exit = false;
boolean accepted = true;
boolean outdoor;
byte[] buffer = new byte[100];
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
DatagramPacket responsePacket;
DatagramSocket requestSocket;
DatagramSocket responseSocket;
String username;
String response = "";
byte[] responseBytes;
try
{
requestSocket = new DatagramSocket(1234);
responseSocket = new DatagramSocket();
while(!exit)
{
try
{
System.out.println("Waiting for connection request");
requestSocket.receive(request);
username = new String(request.getData(), 0, request.getLength());
if(username.charAt(0) == '+')
{
username = username.substring(1);
outdoor = true;
}
else
{
outdoor = false;
InetAddress clientAddress= request.getAddress();
System.out.println("Received a request from " + username + "@" + clientAddress.getHostAddress());
response = "";
for(User u:known_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(User u:known_outdoor_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(Socket s:dest_sockets)
{
response += s.getInetAddress().getHostAddress() + " ";
}
response = response.trim();
response += ";" + (portNumber+1);
System.out.println("Response :" + response);
responseBytes = response.getBytes();
responsePacket = new DatagramPacket(responseBytes, responseBytes.length, clientAddress, 1337);
responseSocket.send(responsePacket);
}
accepted = true;
for(User a:known_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
for(User a:known_outdoor_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
if(accepted)
{
if(outdoor)
{
known_outdoor_users.add(new User(username));
Collections.sort(known_outdoor_users);
}
else
{
portNumber++;
Socket s = (new ServerSocket(portNumber)).accept();
(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, false)).start();
dest_sockets.add(s);
known_users.add(new User(username));
Collections.sort(known_users);
}
displayArea.append(username + " has joined the chat.\n");
displayArea.setCaretPosition(displayArea.getDocument().getLength());
knownUsersPanel.setText("");
knownUsersPanel.append("Indoor users:\n");
for(User a:known_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
knownUsersPanel.append("\nOutdoor users:\n");
for(User a:known_outdoor_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
}
}
catch(SocketTimeoutException e) {}
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
class ListenerStartThread extends Thread {
ServerSocket s;
List<Socket> dest_sockets;
ListenerStartThread(ServerSocket in_s, List<Socket> in_dest_sockets)
{
s = in_s;
dest_sockets = in_dest_sockets;
}
public void run()
{
try
{
dest_sockets.add(s.accept());
}
catch(IOException e) {}
}
}
public class NetworkClient {
private User user;
private List<User> known_users;
@ -506,6 +125,10 @@ public class NetworkClient {
{
known_users.add(new User (u));
}
for(String u:outdoorUsernameList)
{
known_outdoor_users.add(new User (u));
}
for(String a:addressList)
{
Socket s = new Socket(a, portNumber);
@ -571,32 +194,14 @@ public class NetworkClient {
}
user.setName(username);
if(!outdoor)
known_users.add(new User(username));
else
known_outdoor_users.add(new User(username));
Collections.sort(known_users);
chatText.append(username + " has joined the chat.\n");
chatText.setCaretPosition(chatText.getDocument().getLength());
knownUsersPanel.setText("");
knownUsersPanel.append("Indoor users:\n");
for(User a:known_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
knownUsersPanel.append("\nOutdoor users:\n");
for(User a:known_outdoor_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
send(new ConnectNotification(user, false, outdoor));
}
return connected;
}
void send (String message)
void send (Notification notif)
{
for(Socket s:dest_sockets)
{
@ -604,7 +209,7 @@ public class NetworkClient {
{
//System.out.println(s.getInetAddress().getHostAddress() + ": local port " + s.getLocalPort() + ", remote port " + s.getPort());
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new Message(user.getName(), message, false));
out.writeObject(notif);
}
catch(IOException e){}
}
@ -614,7 +219,7 @@ public class NetworkClient {
{
//System.out.println(s.getInetAddress().getHostAddress() + ": local port " + s.getLocalPort() + ", remote port " + s.getPort());
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
out.writeObject(new Message(user.getName(), message, false));
out.writeObject(notif);
}
catch(IOException e){}
}
@ -622,7 +227,7 @@ public class NetworkClient {
void disconnect()
{
send(null);
send(new DisconnectNotification(user, false));
try
{
Thread.sleep(1000);
@ -638,4 +243,9 @@ public class NetworkClient {
catch(IOException e){}
}
}
User getUser()
{
return user;
}
}

View file

@ -0,0 +1,26 @@
package chat;
import java.io.Serializable;
abstract class Notification implements Serializable{
protected User author;
protected Boolean redirected;
public void setAuthor(User new_author)
{
author = new_author;
}
public User getAuthor()
{
return author;
}
public Boolean isRedirected()
{
return redirected;
}
public void setRedirected(Boolean in_redirected)
{
redirected = in_redirected;
}
}

View file

@ -0,0 +1,115 @@
package chat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.List;
import javax.swing.JTextArea;
class OutdoorListenerThread extends Thread {
User user;
JTextArea displayArea;
JTextArea knownUsersPanel;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
int portNumber;
OutdoorListenerThread(User in_user, List<User> in_known_users, List<User> in_known_outdoor_users, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets,
JTextArea in_displayArea, JTextArea in_knownUsersPanel)
{
user = in_user;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
portNumber = 2344;
}
public void run()
{
boolean exit = false;
boolean accepted = true;
String notification;
String username;
String response = "";
byte[] buffer = new byte[100];
DatagramPacket notifPacket = new DatagramPacket(buffer, buffer.length);
DatagramSocket notifSocket;
byte[] notifBytes;
try
{
while(!exit)
{
try
{
ServerSocket servSocket = new ServerSocket(1233);
System.out.println("Waiting for connection request");
Socket link = servSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(link.getInputStream()));
PrintWriter out = new PrintWriter(link.getOutputStream(), true);
username = in.readLine();
System.out.println("Received a request from " + username + "@" + link.getRemoteSocketAddress().toString());
response = "";
for(User u:known_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";";
for(User u:known_outdoor_users)
{
response += u.getName() + " ";
}
response = response.trim();
response += ";" + (portNumber+1);
out.println(response);
accepted = true;
for(User a:known_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
for(User a:known_outdoor_users)
{
accepted = accepted && (!username.equals(a.getName()));
}
if(accepted)
{
notification = "+" + username;
notifBytes = notification.getBytes();
notifSocket = new DatagramSocket();
notifPacket = new DatagramPacket(notifBytes, notifBytes.length, InetAddress.getByName("192.168.1.255"), 1234);
notifSocket.send(notifPacket);
portNumber++;
Socket s = (new ServerSocket(portNumber)).accept();
(new ReceiveThread(user, s, displayArea, known_users, known_outdoor_users, knownUsersPanel, dest_sockets, outdoor_dest_sockets, true)).start();
outdoor_dest_sockets.add(s);
}
servSocket.close();
}
catch(SocketTimeoutException e) {}
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}

152
src/chat/ReceiveThread.java Normal file
View file

@ -0,0 +1,152 @@
package chat;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Collections;
import java.util.List;
import javax.swing.JTextArea;
class ReceiveThread extends Thread {
User user;
Socket socket;
JTextArea displayArea;
JTextArea knownUsersPanel;
Boolean isOutdoor;
List<User> known_users;
List<User> known_outdoor_users;
List<Socket> dest_sockets;
List<Socket> outdoor_dest_sockets;
ReceiveThread(User in_user, Socket in_socket, JTextArea in_displayArea, List<User> in_known_users, List<User> in_known_outdoor_users,
JTextArea in_knownUsersPanel, List<Socket> in_dest_sockets, List<Socket> in_outdoor_dest_sockets, Boolean in_isOutdoor)
{
user = in_user;
socket = in_socket;
displayArea = in_displayArea;
knownUsersPanel = in_knownUsersPanel;
known_users = in_known_users;
known_outdoor_users = in_known_outdoor_users;
dest_sockets = in_dest_sockets;
outdoor_dest_sockets = in_outdoor_dest_sockets;
isOutdoor = in_isOutdoor;
}
public void run()
{
boolean exit = false;
try
{
while(!exit)
{
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Notification notif = (Notification) in.readObject();
if(isOutdoor)
{
for(Socket s:dest_sockets)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
notif.setRedirected(true);
out.writeObject(notif);
}
catch(IOException e){}
}
}
else
{
if(notif instanceof Message)
{
Message m = (Message) notif;
displayArea.append(m.getAuthor() + " : " + m.getText() + "\n");
}
else if (notif instanceof DisconnectNotification)
{
DisconnectNotification dn = (DisconnectNotification) notif;
displayArea.append(dn.getAuthor().getName() + " has left the chat.\n");
for(int i = 0;i < known_users.size();i ++)
{
if (known_users.get(i).getName().equals(dn.getAuthor()))
{
known_users.remove(i);
break;
//System.out.println("Removing " + message.getAuthor());
}
}
for(int i = 0;i < known_outdoor_users.size();i ++)
{
if (known_outdoor_users.get(i).getName().equals(dn.getAuthor()))
{
known_outdoor_users.remove(i);
break;
//System.out.println("Removing " + message.getAuthor());
}
}
if(!dn.isRedirected() && !dn.getAuthor().equals(user.getName()))
{
socket.close();
if(!isOutdoor)
dest_sockets.remove(socket);
else
outdoor_dest_sockets.remove(socket);
}
}
else if (notif instanceof ConnectNotification)
{
ConnectNotification cn = (ConnectNotification) notif;
displayArea.append(cn.getAuthor().getName() + " has joined the chat.\n");
if(cn.isOutdoor())
{
known_outdoor_users.add(cn.getAuthor());
Collections.sort(known_outdoor_users);
}
else
{
known_users.add(cn.getAuthor());
Collections.sort(known_users);
}
}
knownUsersPanel.setText("");
knownUsersPanel.append("Indoor users:\n");
for(User a:known_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
knownUsersPanel.append("\nOutdoor users:\n");
for(User a:known_outdoor_users)
{
knownUsersPanel.append(" " + a.getName() + " \n");
}
displayArea.setCaretPosition(displayArea.getDocument().getLength());
}
if(!notif.getAuthor().equals(user.getName()) && !notif.isRedirected())
{
for(Socket s:outdoor_dest_sockets)
{
try
{
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
notif.setRedirected(true);
out.writeObject(notif);
}
catch(IOException e){}
}
}
}
}
catch(EOFException e) {}
catch(Exception e)
{
e.printStackTrace();
}
}
}