Производительность Try-Catch в Сокет UDP - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую, есть такая конструкция.
IPEndPoint Address = new IPEndPoint(IPAddress.Parse(Ip), (int)Port);
Socket = new Socket(AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, ProtocolType.Udp);
socket.Connect(Address);
 
byte[] recvData = new byte[1400];
int recv = socket.Receive(recvData);
Если уделенный хост не действителен (офлайн) то вызывается исключение на строке

int recv = socket.Receive(recvData);

Необработанное исключение типа "System.Net.Sockets.SocketException" в System.dll Дополнительные сведения: Удаленный хост принудительно разорвал существующее подключение Если эту строку брать в Try-Catch то в моём случае будет хромать производительность программы, каким образом мне миновать исключения Try-Catch дабы не тормозить программу? P.S Отключён хост так отключён, нет он будет думать секунды 2 -3 прежде чем выдать исключения об не активном хосте.

Решение задачи: «Производительность Try-Catch в Сокет UDP»

textual
Листинг программы
var recvData = new List<ArraySegment<byte>> { new ArraySegment<byte>(new byte[1400]) };
if (socket.Connected)
{
    SocketError err = 0;
    int recv = socket.Receive(recvData, SocketFlags.None, out err);
    if (err == SocketError.Success)
    {
        // Process recv
    }
    else
    {
        // Do something
    }
}
else
{
    // Do something
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5