Вопрос

Может ли кто-нибудь объяснить мне, почему этот код иногда дает сбой с нулевым исключением для udpLink при отправке?

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  udpLink.Send(rawMsg, rawMsg.Length);
            }

Это новый код того, как я это исправил.

            udpLink = new UdpClient(ipAddress, 514);
            using (udpLink)
            {
                  if (udpLink != null) udpLink.Send(rawMsg, rawMsg.Length);
            }

Есть идеи?

Это было полезно?

Решение

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

using (UdpClient udpLink = new UdpClient(ipAddress, 514))
{
    udpLink.Send(rawMsg, rawMsg.Length);
}

Другие советы

В зависимости от того, находится ли этот сегмент кода в цикле, который выполняется тысячи раз, вы можете максимально использовать соединения (судя по опыту). вы можете выполнить netstat -an, и если она прокручивается более секунды, это может быть вашей проблемой.

Я не вижу причин, по которым вы должны получать исключение нулевого указателя на udpLink. Вы уверены, что его udpLink имеет значение null, а не rawMsg? Кроме того, вы уверены, что создаете исключение NullPointerException, а не SocketException или другое исключение?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top