Как ServerSocket справляется с одновременным подключением нескольких клиентов? - PullRequest
0 голосов
/ 03 августа 2020

Хорошо, давайте проясним вопросы ...

Я изучаю сокеты в Java, насколько я понял до сих пор, связанные с этой темой:

  • Чтобы несколько клиентов могли подключаться только к одному адресу на сервере (порту), тогда необходимо назначить каждое клиентское подключение другому потоку

Исходя из этого, я запутался в чем-то И мог до сих пор не нашел приемлемого ответа здесь или в Google.

  1. Если Socket синхронный, что произойдет, если 2 клиента попытаются подключиться ОДНОВРЕМЕННО, и как сервер решит, кто подключится первым ?

  2. Как сервер обрабатывает несколько сообщений от одного клиента? Я имею в виду, все ли идет по порядку? Заказ возврата?

  3. Тот же вопрос выше, НО с несколькими сообщениями от нескольких клиентов?

  4. Если сообщения не упорядочены, как этого добиться? (in java)

Извините за все эти вопросы, но для меня все они связаны ...

Изменить: Как сказано в комментарии, я неправильно понял концепция синхронизации, поэтому изменили эту часть. Ребята, мы просим здесь УЧИТЬСЯ, чтобы другие не судили, так что подумайте об этом, прежде чем давать -1 голос: ОК.

1 Ответ

1 голос
/ 03 августа 2020

что произойдет, если 2 клиента попытаются подключиться ОДНОВРЕМЕННО

Два клиента не могут подключиться одновременно: сетевая инфраструктура гарантирует это. Два запроса, происходящие в одно и то же время, называются коллизией (википедия) , и сеть обрабатывает это каким-то образом: это может быть через обнаружение или через предотвращение .

Как сервер обрабатывает несколько сообщений от одного клиента? Я имею ввиду, идет ли это по порядку?

Да. API класса Socket использует протокол TCP / IP , который включает порядковые номера в каждый сегмент и переупорядочивает сегменты, чтобы они обрабатывались в порядке их отправки, который может отличаться от порядок их получения.

Если вместо этого вы использовали DatagramSocket, то будет использоваться UDP , что не гарантирует порядок.

Тот же вопрос выше, НО с несколько сообщений от нескольких клиентов?

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

...