SharpPcap - Un Pacchetto problema Capture per estrarre informazioni dal pacchetto
-
30-09-2019 - |
Domanda
sto usando SharpPcap ai pacchetti di cattura.
Sto cercando di ottenere il valore di classe di traffico e sto usando udp.ipv6.TrafficClass.ToString ().
il problema che sto ricevendo questa eccezione:
Il riferimento non impostato a un'istanza di un oggetto.
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());
}
}
}
Soluzione
Ciò significa eccezione che o udp
, udp.ipv6
o udp.ipv6.TrafficClass
è nullo. È necessario controllare:
if (udp != null && udp.ipv6 != null && udp.ipv6.TrafficClass != null)
{
MessageBox.Show(udp.ipv6.TrafficClass.ToString();
}
Altri suggerimenti
Quello che penso che sta accadendo qui è che in realtà si sta solo controllando ogni altro pacchetto.
Non è necessario il secondo packet = device.GetNextPacket();
perché packet
è già stato assegnato nella parte superiore del vostro ciclo while.
Prova questo e vedere se è ancora ottenere un'eccezione:
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());
}
}
}
Se si sta ancora ricevendo un'eccezione, allora è più probabile perché non stai ricevendo un pacchetto IPv6 valido.