2013-07-26 2 views
0

В MSDN, есть предложение,C#, Socket.Bind при использовании 0 в порт

«Если вы не заботитесь, какой локальный порт используется, вы можете создать IPEndPoint используя 0 для номера порта. в этом случае поставщик услуг назначит доступный номер порта в диапазоне от 1024 до 5000"

Моя путаница: Когда клиент хочет подключиться к серверу,

ли клиент все еще нужно знать, какой порт сервер слушает?

Или клиент просто подключается к порту 0.

Спасибо.

ответ

2

Клиент все еще должен знать, к какому порту был привязан сервер, и подключиться к нему.

Примером этого в действии является протокол FTP. Обычно при использовании активного режима сервер использует один (известный) порт для команд и связывает дополнительный динамический порт для передачи данных. Когда начинается передача данных, сервер отправляет фактический порт в сообщение клиенту по командному каналу, а затем клиент подключается к порту передачи данных (psudo-random), на который он только что получил информацию, чтобы получить фактические данные файла ,

0

При подключении к серверу вы должны знать, что ip + port определяет ваше приложение, чтобы связать этот процесс с удаленным сервером.

гнездо подключения, как этот

ваш: IP сервер: Ip < ============================== ============================================ Ваш: сервер порта: порт

поэтому в клиенте. вам не важно, какой локальный порт. когда вы подключаетесь к серверу, сервер знает порт.