Разобрать вызов функции - C#
Формулировка задачи:
// метод для получения списка устройств CaptureDeviceList deviceList = CaptureDeviceList.Instance; // выбираем первое устройство в спсике (для примера) ICaptureDevice captureDevice = deviceList[0]; // регистрируем событие, которое срабатывает, когда пришел новый пакет captureDevice.OnPacketArrival += new PacketArrivalEventHandler(Program_OnPacketArrival); // открываем в режиме promiscuous, поддерживается также нормальный режим captureDevice.Open(DeviceMode.Promiscuous, 1000); // начинаем захват пакетов captureDevice.Capture(); //Теперь в обработчике события device_OnPacketArrival мы можем работать с пакетом: static void Program_OnPacketArrival(object sender, CaptureEventArgs e) { // парсинг всего пакета Packet packet = Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); // получение только TCP пакета из всего фрейма var tcpPacket = TcpPacket.GetEncapsulated(packet); // получение только IP пакета из всего фрейма var ipPacket = IpPacket.GetEncapsulated(packet); if (tcpPacket != null && ipPacket != null) { DateTime time = e.Packet.Timeval.Date; int len = e.Packet.Data.Length; // IP адрес отправителя var srcIp = ipPacket.SourceAddress.ToString(); // IP адрес получателя var dstIp = ipPacket.DestinationAddress.ToString(); // порт отправителя var srcPort = tcpPacket.SourcePort.ToString(); // порт получателя var dstPort = tcpPacket.DestinationPort.ToString(); // данные пакета var data = tcpPacket.PayloadPacket; } }
Решение задачи: «Разобрать вызов функции»
textual
Листинг программы
using System; using System.Runtime.InteropServices; namespace SharpPcap.LibPcap { /// <summary> /// Base class for all pcap devices /// </summary> public abstract partial class PcapDevice : ICaptureDevice { //--------------------------- //--------------------------- /// <summary> /// Notify the OnPacketArrival delegates about a newly captured packet /// </summary> /// <param name="p"> /// A <see cref="PacketDotNet.RawPacket"/> /// </param> protected void SendPacketArrivalEvent(PacketDotNet.RawPacket p) { var handler = OnPacketArrival; if(handler != null ) { //Invoke the packet arrival event handler(this, new CaptureEventArgs(p, this)); } } //--------------------------- //--------------------------- } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д