Учебник, который вы упомянули, является очень базовым. Вы не можете написать какой-либо разумный сервер без использования потоков. Чтобы иметь два серверных сокета, вы должны создать новый поток для каждого порта, например так (псевдокод):
new Thread() {
public void run() {
ServerSocket server = new ServerSocket(6788);
while(true) {
Socket client1 = server.accept();
//handle client1
}
}.start();
и (обратите внимание на другой порт):
new Thread() {
public void run() {
ServerSocket server = new ServerSocket(6789);
while(true) {
Socket client1 = server.accept();
//handle client2
}
}.start();
Имея розетки client1
и client2
, вы можете обрабатывать их отдельно. Кроме того, обработка подключения клиента должна выполняться в другом потоке, чтобы вы могли обслуживать несколько клиентов. Конечно, в этом коде много дублирования, но рассмотрим это как отправную точку.
Чтобы подвести итоги - если ваша цель - реализовать HTTP GET и PUT, используйте сервлет и избегайте всей этой суеты.