Пример #1
0
        private void packetArrival(object sender, CaptureEventArgs e)
        {
            Packet    p  = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data);
            IpPacket  ip = IpPacket.GetEncapsulated(p);
            TcpPacket tp = TcpPacket.GetEncapsulated(p);
            UdpPacket up = UdpPacket.GetEncapsulated(p);

            if (ip != null)
            {
                if (tp != null)
                {
                    listView.Items.Add(new ListViewItem(new String[] { e.Packet.Timeval.Date.Year + "/" + e.Packet.Timeval.Date.Month + "/" + e.Packet.Timeval.Date.Day + " " + (e.Packet.Timeval.Date.Hour + 8) + ":" + e.Packet.Timeval.Date.Minute + ":" + e.Packet.Timeval.Date.Second + ":" + e.Packet.Timeval.Date.Millisecond, "TCP", ip.SourceAddress.ToString() + ":" + tp.SourcePort.ToString(), ip.DestinationAddress.ToString() + ":" + tp.DestinationPort.ToString(), e.Packet.Data.Length.ToString() }));
                    datas.Add(BitConverter.ToString(e.Packet.Data));
                }
                else if (up != null)
                {
                    listView.Items.Add(new ListViewItem(new String[] { e.Packet.Timeval.Date.Year + "/" + e.Packet.Timeval.Date.Month + "/" + e.Packet.Timeval.Date.Day + " " + (e.Packet.Timeval.Date.Hour + 8) + ":" + e.Packet.Timeval.Date.Minute + ":" + e.Packet.Timeval.Date.Second + ":" + e.Packet.Timeval.Date.Millisecond, "UDP", ip.SourceAddress.ToString() + ":" + up.SourcePort.ToString(), ip.DestinationAddress.ToString() + ":" + up.DestinationPort.ToString(), e.Packet.Data.Length.ToString() }));
                    datas.Add(BitConverter.ToString(e.Packet.Data));
                }
            }
            totalPacketLength += e.Packet.Data.Length;
            totalPacketNum++;
            statusLabel.Text = "共收到" + totalPacketNum + "个数据包,总长度" + totalPacketLength;
        }