WIP3
This commit is contained in:
parent
acecf4de31
commit
d477d4b4ae
1 changed files with 73 additions and 68 deletions
|
@ -51,79 +51,57 @@ import chat.Message;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
class ReceiveThread extends Thread {
|
class ReceiveThread extends Thread {
|
||||||
|
Socket socket;
|
||||||
int port;
|
|
||||||
JTextArea displayArea;
|
JTextArea displayArea;
|
||||||
JTextArea knownUsersPanel;
|
JTextArea knownUsersPanel;
|
||||||
List<User> known_users;
|
List<User> known_users;
|
||||||
|
List<Socket> dest_sockets;
|
||||||
|
|
||||||
ReceiveThread(int in_port, JTextArea in_displayArea, List<User> in_known_users, JTextArea in_knownUsersPanel)
|
ReceiveThread(Socket in_socket, JTextArea in_displayArea, List<User> in_known_users, JTextArea in_knownUsersPanel, List<Socket> in_dest_sockets)
|
||||||
{
|
{
|
||||||
port = in_port;
|
socket = in_socket;
|
||||||
displayArea = in_displayArea;
|
displayArea = in_displayArea;
|
||||||
knownUsersPanel = in_knownUsersPanel;
|
knownUsersPanel = in_knownUsersPanel;
|
||||||
known_users = in_known_users;
|
known_users = in_known_users;
|
||||||
|
dest_sockets = in_dest_sockets;
|
||||||
}
|
}
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
|
boolean exit = false;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ServerSocket servSocket = new ServerSocket(port);
|
while(!exit)
|
||||||
Socket link;
|
{
|
||||||
boolean exit = false;
|
System.out.println(socket);
|
||||||
boolean connected = false;
|
System.out.println("Waiting for a message");
|
||||||
|
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
|
||||||
|
System.out.println("Received a message");
|
||||||
|
Message message = (Message) in.readObject();
|
||||||
|
if(message.getText() != null)
|
||||||
|
{
|
||||||
|
displayArea.append(message.getAuthor() + " : " + message.getText() + "\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
displayArea.append(message.getAuthor() + " has left the chat.\n");
|
||||||
|
known_users.remove(new User(message.getAuthor()));
|
||||||
|
knownUsersPanel.setText("");
|
||||||
|
knownUsersPanel.append("Online:\n");
|
||||||
|
for(User u:known_users)
|
||||||
|
{
|
||||||
|
knownUsersPanel.append(" " + u.getName() + " \n");
|
||||||
|
}
|
||||||
|
exit = true;
|
||||||
|
}
|
||||||
|
displayArea.setCaretPosition(displayArea.getDocument().getLength());
|
||||||
|
}
|
||||||
|
|
||||||
while(!connected)
|
socket.close();
|
||||||
{
|
}
|
||||||
try
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
link = servSocket.accept();
|
e.printStackTrace();
|
||||||
ReceiveThread next = new ReceiveThread(port+1, displayArea, known_users, knownUsersPanel);
|
}
|
||||||
next.start();
|
|
||||||
|
|
||||||
connected = true;
|
|
||||||
|
|
||||||
while(!exit)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
System.out.println("Waiting for a message");
|
|
||||||
ObjectInputStream in = new ObjectInputStream(link.getInputStream());
|
|
||||||
System.out.println("Received a message");
|
|
||||||
Message message = (Message) in.readObject();
|
|
||||||
if(message.getText() != null)
|
|
||||||
{
|
|
||||||
displayArea.append(message.getAuthor() + " : " + message.getText() + "\n");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
displayArea.append(message.getAuthor() + " has left the chat.\n");
|
|
||||||
known_users.remove(new User(message.getAuthor()));
|
|
||||||
knownUsersPanel.setText("");
|
|
||||||
knownUsersPanel.append("Online:\n");
|
|
||||||
for(User u:known_users)
|
|
||||||
{
|
|
||||||
knownUsersPanel.append(" " + u.getName() + " \n");
|
|
||||||
}
|
|
||||||
exit = true;
|
|
||||||
}
|
|
||||||
displayArea.setCaretPosition(displayArea.getDocument().getLength());
|
|
||||||
}
|
|
||||||
catch(Exception e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
link.close();
|
|
||||||
servSocket.close();
|
|
||||||
}
|
|
||||||
catch(SocketTimeoutException e) {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch(IOException e)
|
|
||||||
{
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -193,6 +171,10 @@ class ConnectionListenerThread extends Thread {
|
||||||
}
|
}
|
||||||
if(accepted)
|
if(accepted)
|
||||||
{
|
{
|
||||||
|
Socket s = (new ServerSocket(1237+(known_users.size()))).accept();
|
||||||
|
ReceiveThread t2 = new ReceiveThread(s, displayArea, known_users, knownUsersPanel, dest_sockets);
|
||||||
|
dest_sockets.add(s);
|
||||||
|
|
||||||
known_users.add(new User(username));
|
known_users.add(new User(username));
|
||||||
|
|
||||||
Collections.sort(known_users);
|
Collections.sort(known_users);
|
||||||
|
@ -218,6 +200,25 @@ class ConnectionListenerThread extends Thread {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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 {
|
public class NetworkClient {
|
||||||
private User user;
|
private User user;
|
||||||
private List<User> known_users;
|
private List<User> known_users;
|
||||||
|
@ -291,7 +292,7 @@ public class NetworkClient {
|
||||||
|
|
||||||
for(String u:usernameList)
|
for(String u:usernameList)
|
||||||
{
|
{
|
||||||
nameAvailable = nameAvailable && (!username.equals(u));
|
nameAvailable = nameAvailable && (!username.equals(u));
|
||||||
}
|
}
|
||||||
if(nameAvailable)
|
if(nameAvailable)
|
||||||
{
|
{
|
||||||
|
@ -303,7 +304,9 @@ public class NetworkClient {
|
||||||
for(String a:addressList)
|
for(String a:addressList)
|
||||||
{
|
{
|
||||||
System.out.println("Connecting to " + a + " on port " + (1237+usernameList.length));
|
System.out.println("Connecting to " + a + " on port " + (1237+usernameList.length));
|
||||||
dest_sockets.add(new Socket(a, 1237+usernameList.length));
|
Socket s = new Socket(a, 1237+usernameList.length);
|
||||||
|
ReceiveThread t2 = new ReceiveThread(s, chatText, known_users, knownUsersPanel, dest_sockets);
|
||||||
|
dest_sockets.add(s);
|
||||||
}
|
}
|
||||||
Collections.sort(known_users);
|
Collections.sort(known_users);
|
||||||
connected = true;
|
connected = true;
|
||||||
|
@ -330,15 +333,16 @@ public class NetworkClient {
|
||||||
|
|
||||||
if(connected)
|
if(connected)
|
||||||
{
|
{
|
||||||
ReceiveThread t2 = new ReceiveThread(1237+(known_users.size()), chatText, known_users, knownUsersPanel);
|
|
||||||
ConnectionListenerThread t3 = new ConnectionListenerThread(known_users, dest_sockets, chatText, knownUsersPanel);
|
|
||||||
|
|
||||||
t2.start();
|
(new ConnectionListenerThread(known_users, dest_sockets, chatText, knownUsersPanel)).start();
|
||||||
t3.start();
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
dest_sockets.add(new Socket("25.67.234.235", 1237+(known_users.size())));
|
ServerSocket s1 = new ServerSocket(1237+(known_users.size()));
|
||||||
|
(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();
|
||||||
}
|
}
|
||||||
catch(IOException e)
|
catch(IOException e)
|
||||||
{
|
{
|
||||||
|
@ -373,6 +377,7 @@ public class NetworkClient {
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// System.out.println(s);
|
||||||
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
|
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
|
||||||
out.writeObject(new Message(user.getName(), message));
|
out.writeObject(new Message(user.getName(), message));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue