У меня есть приложение, которое читает данные с сервера 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))
});
}
Когда я останавливаю серверную часть, функция ожидает данных (это нормальное поведение). Я хотел бы обнаружить, когда сервер отключен, а затем закрыть все мои клиенты.
Я спрашиваю себя, должен ли я использовать класс сокетов, чтобы иметь больше элементов управления, или просто я что-то здесь упускаю.
В любом случае спасибо за вашу помощь.