Как использовать динамические порты с классом Socket?

Я только узнаю о сети, и я верю, что есть что-то, называемое «динамическими портами». Я не могу понять, как мне реализовать сервер, использующий динамические порты? При настройке сокета мне придется привязываться к определенному порту, например:

using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
    IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
    socket.Bind(endPoint);
    socket.Listen(10);
    using (Socket handler = socket.Accept())
    {
        /* ... */
    }
}

Мне нужно было определенно установить порт, который я хочу слушать (1234). Насколько я понимаю динамические порты, клиент отправляет запрос на случайный порт, а сервер каким-то образом определяет, какое приложение получит этот запрос и ответит.

Как бы клиент сказал

Я хочу, чтобы на мой запрос ответили в приложении «MyCustomService01»?

Может ли кто-нибудь пояснить и дать пример кода?


person GameScripting    schedule 17.08.2012    source источник


Ответы (1)


socket — ваш слушатель, который отправляет сообщения на эфемерные порты; если вы внимательно посмотрите на handler, в частности на .LocalEndPoint и .RemoteEndPoint, вы обнаружите, что он уже настроен как динамический порт. В принципе, здесь ничего особенного делать не надо — просто общайтесь через handler.

person Marc Gravell    schedule 17.08.2012
comment
Пока спасибо :) Можете ли вы включить ссылку или некоторые подробности не о том, как заставить его работать, а скорее почему это работает. - person GameScripting; 17.08.2012