Question

J'utilise SharpPcap aux paquets de capture.

Je suis en train d'obtenir la valeur de classe de trafic et j'utilise udp.ipv6.TrafficClass.ToString ().

le problème que je reçois cette exception:

Référence d'objet non définie à une instance d'un objet.

private void packetCapturingThreadMethod()
{

   Packet packet = null;

   while ((packet = device.GetNextPacket()) != null)
   {
        packet = device.GetNextPacket();

        if (packet is UDPPacket)
        {
            UDPPacket udp = (UDPPacket)packet;

            MessageBox.Show(udp.ipv6.TrafficClass.ToString());
        }
   }
}
Était-ce utile?

La solution

Cela signifie que d'exception qui soit udp, udp.ipv6 ou udp.ipv6.TrafficClass est nulle. Vous devez vérifier:

if (udp != null && udp.ipv6 != null && udp.ipv6.TrafficClass != null)
{
    MessageBox.Show(udp.ipv6.TrafficClass.ToString();
}

Autres conseils

Ce que je pense qui se passe ici est que vous êtes en train de vérifier que tous les autres paquets.

Vous n'avez pas besoin du deuxième packet = device.GetNextPacket(); parce packet est déjà affecté au sommet de la boucle while.

Essayez et voyez si vous obtenez toujours une exception:

private void packetCapturingThreadMethod()
{

   Packet packet = null;

   while ((packet = device.GetNextPacket()) != null)
   {
        if (packet is UDPPacket)
        {
            UDPPacket udp = (UDPPacket)packet;

            MessageBox.Show(udp.ipv6.TrafficClass.ToString());
        }
   }
}


Si vous obtenez toujours une exception alors il est plus probable parce que vous n'êtes pas obtenir un paquet de ipv6 valide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top