Reputation: 5851
I'm using SharpPcap to capture packets.
I'm trying to get Traffic Class value and I'm using udp.ipv6.TrafficClass.ToString().
the problem that I'm getting this exception:
Object reference not set to an instance of an object.
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());
}
}
}
Upvotes: 2
Views: 2357
Reputation: 333
What I think is happening here is that you're actually only checking every other packet.
You don't need the second packet = device.GetNextPacket();
because packet
is already being assigned at the top of your while loop.
Try this and see if you still get an 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());
}
}
}
If you're still getting an exception then it's most likely because you're not getting a valid ipv6 packet.
Upvotes: 4
Reputation: 161773
That exception means that either udp
, udp.ipv6
or udp.ipv6.TrafficClass
is null. You need to check:
if (udp != null && udp.ipv6 != null && udp.ipv6.TrafficClass != null)
{
MessageBox.Show(udp.ipv6.TrafficClass.ToString();
}
Upvotes: 3