Pregunta

¿Puede alguien explicarme por qué este código falla de vez en cuando con una excepción nula para udpLink durante el envío?

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

Este es el nuevo código sobre cómo lo arreglé.

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

¿Alguna idea?

¿Fue útil?

Solución

No estoy seguro de si realmente es el problema, pero supongo que es la forma en que usas la declaración de uso. Lo haría así:

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

Otros consejos

Dependiendo de si este segmento de código está o no en un bucle que se ejecuta miles de veces, es posible que esté maximizando las conexiones (hablando por experiencia). puede hacer un netstat -an y si se desplaza por más de un segundo, es probable que ese sea su problema.

No veo ninguna razón por la que debería obtener una excepción de puntero nulo en udpLink. ¿Estás seguro de que es udpLink que es nulo y no rawMsg? Además, ¿estás seguro de que estás lanzando una NullPointerException y no una SocketException u otra excepción?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top