package com.company; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.Socket; import java.util.List; public class Client extends Thread { private List clientList; private Socket socket; private String name; public Client(Socket socket, List clientList) { this.socket = socket; this.clientList = clientList; clientList.add(this); } @Override public void run() { try { OutputStream os = socket.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(os); InputStream is = socket.getInputStream(); ObjectInputStream ois = new ObjectInputStream(is); Object object = ois.readObject(); if (object instanceof String) { name = (String) object; System.out.println( socket.getInetAddress().getHostAddress() + " " + name); oos.writeObject("Ok"); oos.flush(); } while (!isInterrupted()) { object = ois.readObject(); if (object instanceof String) { for (Client c : clientList) { if (c == this) continue; if (c.socket.isConnected()) { ObjectOutputStream o = new ObjectOutputStream( c.socket.getOutputStream() ); o.writeObject(name + " | " + object); o.flush(); } } } } clientList.remove(this); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }