UdpClient начинает получать, как определить, когда сервер выключен - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть приложение, которое читает данные с сервера Udp на 32 разных портах, которые мне нужно обработать. Я использую UdpClient.BeginReceive, который вызывает сам себя, потому что я хочу все время слушать:

 private void ProcessEndpointData(IAsyncResult result)
    {
        UdpClient client = result.AsyncState as UdpClient;

        // points towards whoever had sent the message:
        IPEndPoint source = new IPEndPoint(0, 0);

        // schedule the next receive operation once reading is done:
        client.BeginReceive(new AsyncCallback(this.ProcessEndpointData), client);

        // get the actual message and fill out the source:
        this.DecodeDatagram(new DatagrammeAscb()
        {
            Datagramme = this.ByteArrayToStructure<Datagram>(client.EndReceive(result, ref source)) 
        });
    }

Когда я останавливаю серверную часть, функция ожидает данных (это нормальное поведение). Я хотел бы обнаружить, когда сервер отключен, а затем закрыть все мои клиенты.

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

В любом случае спасибо за вашу помощь.

...