You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
1.8 KiB

  1. package com.vertsys;
  2. import java.io.*;
  3. import java.net.Socket;
  4. public class ServerThread extends Server implements Runnable{
  5. private Socket sock;
  6. public ServerThread(Socket sock){
  7. this.sock = sock;
  8. }
  9. @Override
  10. public void run() {
  11. if (DEBUG_MODE)
  12. System.out.println("New connection --> New Thread started.");
  13. if(DEBUG_MODE)
  14. System.out.println("Send all received messages to new client...");
  15. try {
  16. ObjectOutputStream toNewClient = new ObjectOutputStream(sock.getOutputStream());
  17. toNewClient.writeObject(messages);
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }
  21. while(!sock.isClosed()){
  22. System.out.println("Still running...");
  23. this.addMessage();
  24. }
  25. if(DEBUG_MODE)
  26. System.out.println("Socket closed --> Joining Thread...");
  27. }
  28. private void addMessage(){
  29. String newMessage = "";
  30. try {
  31. newMessage = readMessage();
  32. } catch (IOException e) {
  33. e.printStackTrace();
  34. }
  35. if (DEBUG_MODE)
  36. System.out.println("Add new Message...");
  37. messages.add(newMessage);
  38. if(DEBUG_MODE)
  39. System.out.println(newMessage);
  40. String finalNewMessage = newMessage;
  41. clients.forEach(socket -> {
  42. DataOutputStream outgoing = null;
  43. try {
  44. outgoing = new DataOutputStream(socket.getOutputStream());
  45. outgoing.writeBytes(finalNewMessage + "\n");
  46. } catch (IOException e) {
  47. e.printStackTrace();
  48. }
  49. });
  50. }
  51. private String readMessage() throws IOException {
  52. BufferedReader incoming = new BufferedReader(new InputStreamReader(sock.getInputStream()));
  53. return incoming.readLine();
  54. }
  55. }