Я изучаю урок Sun по Java. Я на уроке о розетках. Для простого многопоточного сервера есть следующий код:
import java.net.*;
import java.io.*;
public class KKMultiServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
boolean listening = true;
try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
System.exit(-1);
}
while (listening)
new KKMultiServerThread(serverSocket.accept()).start();
serverSocket.close();
}
}
Говорят, что сервер "продолжает прослушивать больше входящих соединений". Я просто не понимаю, как это возможно; строка serverSocket.accept()
создает новый (клиентский) объект Socket
, который в соответствии с руководством "привязан к тому же локальному порту и имеет свой ...". Ну, как это возможно, что сервер взаимодействует с клиентом и прослушивает больше входящих соединений на том же порту? Насколько я знаю, если порт используется для какого-то соединения, он блокируется и не может использоваться для других целей.
Так что я тут не так делаю?