Java: a TCP echo server on the loopback interface
TCP gives two programs a reliable, ordered byte stream. A server creates a ServerSocket bound to an address and port and calls accept, which blocks until a client connects. The client creates a Socket to that address and port. Each side then reads and writes through input and output streams.
Java
import java.io.*;
import java.net.*;
class Main {
public static void main(String[] args) throws Exception {
try (ServerSocket server = new ServerSocket(0, 1, InetAddress.getLoopbackAddress())) {
int port = server.getLocalPort();
Thread serverThread = new Thread(() -> {
try (Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream(), true)) {
String line = in.readLine();
out.println("echo: " + line);
} catch (IOException e) {
System.out.println("server error: " + e.getMessage());
}
});
serverThread.start();
try (Socket socket = new Socket(InetAddress.getLoopbackAddress(), port);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("hello");
System.out.println(in.readLine());
}
serverThread.join();
}
}
}