forked from tgeier/online-chat-ueb3
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
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();
|
|
}
|
|
}
|