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