Почему мой UDPClient время от времени обнуляется
-
06-07-2019 - |
Вопрос
Может ли кто-нибудь объяснить мне, почему этот код иногда дает сбой с нулевым исключением для 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 или другое исключение?