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

package com.vertsys;
import java.io.*;
import java.net.Socket;
public class ServerThread extends Server implements Runnable{
private Socket sock;
public ServerThread(Socket sock){
this.sock = sock;
}
@Override
public void run() {
if (DEBUG_MODE)
System.out.println("New connection --> New Thread started.");
if(DEBUG_MODE)
System.out.println("Send all received messages to new client...");
try {
ObjectOutputStream toNewClient = new ObjectOutputStream(sock.getOutputStream());
toNewClient.writeObject(messages);
} catch (IOException e) {
e.printStackTrace();
}
while(!sock.isClosed()){
System.out.println("Still running...");
this.addMessage();
}
if(DEBUG_MODE)
System.out.println("Socket closed --> Joining Thread...");
}
private void addMessage(){
String newMessage = "";
try {
newMessage = readMessage();
} catch (IOException e) {
e.printStackTrace();
}
if (DEBUG_MODE)
System.out.println("Add new Message...");
messages.add(newMessage);
if(DEBUG_MODE)
System.out.println(newMessage);
String finalNewMessage = newMessage;
clients.forEach(socket -> {
DataOutputStream outgoing = null;
try {
outgoing = new DataOutputStream(socket.getOutputStream());
outgoing.writeBytes(finalNewMessage + "\n");
} catch (IOException e) {
e.printStackTrace();
}
});
}
private String readMessage() throws IOException {
BufferedReader incoming = new BufferedReader(new InputStreamReader(sock.getInputStream()));
return incoming.readLine();
}
}