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();
}
}