package server; import java.awt.Color; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import server.network.NetworkMessage; public class User { String username; Color color; private Socket client; private ObjectInputStream in; private ObjectOutputStream out; public User(String username, Color color, Socket client, Server server){ this.username = username; this.color = color; this.client = client; try { out = new ObjectOutputStream(client.getOutputStream()); in = new ObjectInputStream(client.getInputStream()); } catch (IOException e1) { e1.printStackTrace(); } Thread receivethread = new Thread(new Runnable() { @Override public void run() { while(true){ try { try { Object objectinput = in.readObject(); if(objectinput instanceof NetworkMessage){ NetworkMessage input = (NetworkMessage)objectinput; setUsername(input.getUsername()); setColor(input.getC()); server.addMessage(new Message(input.getMessage(), User.this)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } } catch (IOException e) { System.out.println("User disconnected: " + username + "from: " + client.getLocalSocketAddress()); server.deleteUser(User.this); try { client.close(); } catch (IOException e1) { e1.printStackTrace(); } return; } } } }); receivethread.start(); } public void sendMessage(Message message){ NetworkMessage nwmessage = new NetworkMessage(message.getMessage(), message.getUser().getColor(), message.getUser().getUsername()); try { out.writeObject(nwmessage); } catch (IOException e) { e.printStackTrace(); } } public Color getColor() { return color; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public void setColor(Color color) { this.color = color; } }