Handle exit status
Added so clients can send "exit" to break out of the while loop
This commit is contained in:
parent
47ac4552ab
commit
18239fce80
2 changed files with 10 additions and 5 deletions
|
@ -22,11 +22,12 @@ class ClientHandler extends Thread {
|
||||||
if(bytesRead == -1){
|
if(bytesRead == -1){
|
||||||
System.out.println("Client closed the Connection");
|
System.out.println("Client closed the Connection");
|
||||||
}
|
}
|
||||||
|
|
||||||
String message = new String(buffer, 0, bytesRead);
|
String message = new String(buffer, 0, bytesRead);
|
||||||
System.out.println("Received message from client: " + message);
|
System.out.println("Received message from client: " + message);
|
||||||
|
|
||||||
String response = "Hello from froj!";
|
|
||||||
out.write(response.getBytes());
|
out.write(message.getBytes());
|
||||||
|
|
||||||
SocketServer.messageQueue.put(message);
|
SocketServer.messageQueue.put(message);
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import java.util.concurrent.LinkedBlockingQueue;
|
||||||
public class SocketServer implements FrojCallable {
|
public class SocketServer implements FrojCallable {
|
||||||
protected static BlockingQueue<String> messageQueue = new LinkedBlockingQueue<>();
|
protected static BlockingQueue<String> messageQueue = new LinkedBlockingQueue<>();
|
||||||
private static ServerSocket serverSocket;
|
private static ServerSocket serverSocket;
|
||||||
|
private final String EXIT_CODE = "EXIT";
|
||||||
@Override
|
@Override
|
||||||
public int arity() {
|
public int arity() {
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -26,9 +27,8 @@ public class SocketServer implements FrojCallable {
|
||||||
try {
|
try {
|
||||||
Double param = (Double) arguments.get(0);
|
Double param = (Double) arguments.get(0);
|
||||||
int port = param.intValue();
|
int port = param.intValue();
|
||||||
serverSocket = new ServerSocket(port);
|
|
||||||
System.out.println("Server started. Listening for incoming connections...");
|
|
||||||
|
|
||||||
|
serverSocket = new ServerSocket(port);
|
||||||
while (true) {
|
while (true) {
|
||||||
Socket socket = serverSocket.accept();
|
Socket socket = serverSocket.accept();
|
||||||
System.out.println("Incoming connection from " + socket.getInetAddress());
|
System.out.println("Incoming connection from " + socket.getInetAddress());
|
||||||
|
@ -36,13 +36,17 @@ public class SocketServer implements FrojCallable {
|
||||||
ClientHandler clientHandler = new ClientHandler(socket);
|
ClientHandler clientHandler = new ClientHandler(socket);
|
||||||
clientHandler.start();
|
clientHandler.start();
|
||||||
String nextMessage = getNextMessage();
|
String nextMessage = getNextMessage();
|
||||||
|
if(nextMessage.toLowerCase().contentEquals("exit")){
|
||||||
|
shutdown();
|
||||||
|
break;
|
||||||
|
}
|
||||||
try{
|
try{
|
||||||
return Double.parseDouble(nextMessage);
|
return Double.parseDouble(nextMessage);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
return nextMessage;
|
return nextMessage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return EXIT_CODE;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(e.getMessage());
|
throw new RuntimeException(e.getMessage());
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
|
|
Loading…
Reference in a new issue