Java Network Programming: Server Implementation Patterns

Posted by Anonymous and classified in Computers

Written on in with a size of 2.1 KB

Thread Pool Server Implementation

ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(10);
try (ServerSocket serverSocket = new ServerSocket(4444)) {
    while (true) {
        System.out.println("\n Listening for a client connection");
        Socket socketForClient = serverSocket.accept();
        System.out.println("\n New connection accepted: " + socketForClient.getRemoteSocketAddress());
        WorkerThread task = new WorkerThread(socketForClient);
        System.out.println("Task created: " + task);
        executor.submit(task);
    }
}

public WorkerThread(Socket socketForClient) {
    this.socketForClient = socketForClient;
}

Network Programming MCQ Answers

  • Q4: The interest set defines what operations the Selector should check for, while the ready set identifies operations the channel is actually prepared to perform.
  • Q5: It serves as a handle to manage or drop the membership and to block specific source addresses.
  • Q6: The channel must be bound to a local port using the bind() method.
  • InputStream / OutputStream: Facilitate data transfer between server and client.

TCP Server Image Transfer

ServerSocket serverSocket = new ServerSocket(SERVER_PORT);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
outputStream.write(imageDataBytes);

UDP Server Using DatagramChannel

try (DatagramChannel dchannel = DatagramChannel.open()) {
    dchannel.bind(new InetSocketAddress(SERVER_IP, SERVER_PORT));
    dchannel.send(echoBuffer, clientSocketAddress);
}

Basic Single-Client TCP Server

public class SingleClientServer {
    public static void main(String[] args) throws Exception {
        ServerSocket server = new ServerSocket(5000);
        Socket client = server.accept();
        System.out.println("Client connected: " + client.getInetAddress());
        client.close();
        server.close();
    }
}

Related entries: