Client.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.company;
  2. import java.io.InputStream;
  3. import java.io.ObjectInputStream;
  4. import java.io.ObjectOutputStream;
  5. import java.io.OutputStream;
  6. import java.net.Socket;
  7. import java.util.List;
  8. public class Client extends Thread {
  9. private List<Client> clientList;
  10. private Socket socket;
  11. private String name;
  12. public Client(Socket socket, List<Client> clientList) {
  13. this.socket = socket;
  14. this.clientList = clientList;
  15. clientList.add(this);
  16. }
  17. @Override
  18. public void run() {
  19. try {
  20. OutputStream os = socket.getOutputStream();
  21. ObjectOutputStream oos = new ObjectOutputStream(os);
  22. InputStream is = socket.getInputStream();
  23. ObjectInputStream ois = new ObjectInputStream(is);
  24. Object object = ois.readObject();
  25. if (object instanceof String) {
  26. name = (String) object;
  27. System.out.println(
  28. socket.getInetAddress().getHostAddress() +
  29. " " + name);
  30. oos.writeObject("Ok");
  31. oos.flush();
  32. }
  33. while (!isInterrupted()) {
  34. object = ois.readObject();
  35. if (object instanceof String) {
  36. for (Client c : clientList) {
  37. if (c == this) continue;
  38. if (c.socket.isConnected()) {
  39. ObjectOutputStream o = new ObjectOutputStream(
  40. c.socket.getOutputStream()
  41. );
  42. o.writeObject(name + " | " + object);
  43. o.flush();
  44. }
  45. }
  46. }
  47. }
  48. clientList.remove(this);
  49. socket.close();
  50. } catch (Exception e) {
  51. e.printStackTrace();
  52. }
  53. }
  54. }