package clientserver; import java.io.*; import java.net.*; public class ClientManager extends Thread { ClientBehavior clientBehavior; private Socket socket; private ObjectOutputStream oos; private ObjectInputStream ois; private Serializable descriptor; public ClientManager(Serializable descriptor, ClientBehavior clientBehavior, String serverHost, int serverPort) throws IOException { this.descriptor = descriptor; this.clientBehavior = clientBehavior; socket = new Socket(serverHost, serverPort); } public void run() { try { oos = new ObjectOutputStream(socket.getOutputStream()); ois = new ObjectInputStream(socket.getInputStream()); oos.writeObject(descriptor); clientBehavior.connected(this); new Thread(clientBehavior).start(); while (true) { clientBehavior.messageReceived(ois.readObject()); } } catch (Exception e) { e.printStackTrace(); } } public void sendMessage(Object x) { try { oos.writeObject(x); } catch (Exception e) { e.printStackTrace(); } } }