Как класс serversocket обслуживает несколько клиентских подключений на одном и том же порту? - PullRequest
12 голосов
/ 16 сентября 2010

При использовании класса Socket один устанавливает TCP-соединение с сервером на каком-либо порту, но на сервере ServerSocket способен обрабатывать несколько клиентских соединений для каждого запроса на принятие и делегировать его потоку для обработки запроса на сервере.Но как это возможно для класса ServerSocket принимать несколько соединений TCP на одном и том же порту.

Означает ли это, что ОС сама решает, сколько соединений она разрешает, или какой максимальный объем невыполненных заданий разрешен, и может ли это контролироваться приложениями в верхней части ОС (я имею в виду, что java ограничен максимальным задним числомподдерживается ОС) и есть ли право на резервные соединения в спецификации TCP?

Best reagards,
Keshav

Ответы [ 3 ]

8 голосов
/ 16 сентября 2010

TCP-соединение определяется уникальным набором (IP-адрес источника, порт источника, адрес IP, порт Dest) Поскольку сервер привязывается к определенному порту, он определяет две из этих 4 переменных. Пока все клиенты приходят с разных IP-адресов и / или разных портов, это не будет проблемой.

И да, ОС может контролировать количество разрешенных подключений, и ваша программа может ограничить это еще больше.

3 голосов
/ 16 сентября 2010

Он обслуживает несколько клиентов, и вы можете выбрать, сколько клиентов вы будете обрабатывать в одно и то же время.

Соединение (иначе как Socket между клиентом и сервером не определяется только ServerIP/ ServerPort, он идентифицируется как ClientIP / ClientPort / ServerIP / ServerPort.

Вам нужно только принимать соединения (и обычно обрабатывать их в разных потоках).


По умолчанию размер журнала невыполненных работ50, но вы можете установить его при создании ServerSocket.

new ServerSocket(21, 100); //Create a server socket with a backlog of 100

Ресурсы:

0 голосов
/ 16 сентября 2010

Операционная система, в которой работает сервер, использует номер удаленного порта, чтобы различать различные соединения с сервером.

...