1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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();
- }
- }
- }
|