|  | @@ -0,0 +1,68 @@
 | 
	
		
			
				|  |  | +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<Client> clientList;
 | 
	
		
			
				|  |  | +    private Socket socket;
 | 
	
		
			
				|  |  | +    private String name;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public Client(Socket socket, List<Client> 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();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |