SharpPcap - Un problème de capture de paquets à l'information extrait du paquet
-
30-09-2019 - |
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());
}
}
}
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.