Skip to content

Instantly share code, notes, and snippets.

@jakubtuchol
Created January 27, 2017 21:23
Show Gist options
  • Select an option

  • Save jakubtuchol/adcc3e0db204f6b232e4298f4c6c5ba6 to your computer and use it in GitHub Desktop.

Select an option

Save jakubtuchol/adcc3e0db204f6b232e4298f4c6c5ba6 to your computer and use it in GitHub Desktop.
Multithreaded echo server
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.lang.Runnable;
import java.lang.Thread;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoServer {
public static void main (String[] args) {
try {
ServerSocket server = new ServerSocket(5566);
while (true) {
Socket client = server.accept();
new Thread(new EchoHandler(client)).start();
}
}
catch (Exception e) {
System.err.println("Exception caught:" + e);
}
}
}
class EchoHandler implements Runnable {
Socket client;
EchoHandler (Socket client) {
this.client = client;
}
public void run () {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter writer = new PrintWriter(client.getOutputStream(), true);
writer.println("[type 'bye' to disconnect]");
while (true) {
String line = reader.readLine();
if (line.trim().equals("bye")) {
writer.println("bye!");
break;
}
writer.println("[echo] " + line);
}
}
catch (Exception e) {
System.err.println("Exception caught: client disconnected.");
}
finally {
try { client.close(); }
catch (Exception e ){ ; }
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment