2015-11-01 4 views
0

Если на компьютере запущено серверное приложение, которое прослушивает какой-либо порт (например, 9999) и на том же компьютере, несколько клиентских приложений открывают соединение TcpClient (localhost, 9999) с тем же сервером приложение, что произойдет? Будет ли это причиной какого-то столкновения?Несколько TcpClients на том же компьютере, что и сервер

+0

Возможный дубликат [Можно два приложения слушать тот же порт?] (Http://stackoverflow.com/questions/1694144/can-two-applications-listen-to-the-same -port) – Cjen1

+0

@ Микки, я просто не понимаю, как это работает, как пакеты не смешиваются? – LimS

ответ

0

В C# a TcpListener ожидает входящих соединений от клиента с AcceptSocket или AcceptTcpClient. При успешном соединении вы возвращаете объект Socket, который может использоваться для связи с этим конкретным клиентом, идентифицированным IP-адресом клиента. Если соединение с клиентом обрабатывается в другом потоке, чем AcceptSocket, ваше приложение-приложение может разговаривать сразу с несколькими клиентами. например серверный цикл просто вызывает Accept и непосредственно передает Socket некоторому обработчику Thread/Task. И вообще для входящих соединений вы знаете IP-адрес клиента (и порт), и на основе этого можно мультиплексировать соединение/данные в соответствующий сокет. Хороший и полный ответ, но не C# конкретных здесь TCP : two different sockets sharing a port?

На стороне клиента случайный порт выбран для исходящего соединения. Это делается с помощью сетевой/сетевой системы

В парадигме Интернета номера портов находятся между 0 и 65535 и выбраны случайным образом программным обеспечением транспортного уровня, запущенным на клиентском хосте. Они называются эфемерными портами (от 1024 до 49151).

Applied C#.NET Socket Programming

+0

Мой вопрос: что происходит, когда все работает на одной машине. – LimS

+0

Мой вопрос: что происходит, когда все находится на одной машине, сервере и клиентах. Все они имеют один и тот же IP-адрес. Сервер прослушивает указанный порт, а для портов клиентов - я не уверен, что вы выбираете случайный выходной порт неявно или нет. Если нет, то я не понимаю, как они могут иметь разный сокет. – LimS

+0

Да, вы правы Я думаю, что базовая система сокетов ОС выбирает случайные внешние ресурсы для клиента –

Смежные вопросы