На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Снифер на C# с Raw сокетом ловит не все пакеты , пропускает часть трафика
    Снифер на C# с Raw сокетом ловит не все пакеты.
    Копирую фильм по сети а снифер (только считает количество пакетов и объём переданных данных) не правильно указывает объём сетевого трафика. Может кто встречался с таким глюком?

    Фрагмент кода:
    ExpandedWrap disabled
      FmainSocket = new Socket( AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP );
      FmainSocket.Bind( new IPEndPoint( IPAddress.Parse( FcaptureIP ), 0 ) );
      FmainSocket.SetSocketOption( SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true );
      byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
      byte[] byOut = new byte[4];
      FmainSocket.IOControl( IOControlCode.ReceiveAll, byTrue, byOut );
      FmainSocket.BeginReceive( FreceiveBuf, 0, FreceiveBuf.Length, SocketFlags.None, new AsyncCallback( OnReceive ), null );
       
      private void OnReceive ( IAsyncResult _ar ) {
      int vReceived = FmainSocket.EndReceive( _ar );
      byte[] vReceiveBuf = FreceiveBuf;
      // отпарсить принятое
      ParseData( vReceiveBuf, vReceived );
      FreceiveBuf = new byte[CmaxPacketSize];
      FmainSocket.BeginReceive( FreceiveBuf, 0, FreceiveBuf.Length, SocketFlags.None, new AsyncCallback( OnReceiv ), null );
      }
       
       
      private void ParseData ( byte[] _receiveBuf, int _Received ) {
      lock(this){
      CapturedPackets++;
      CapturedBytes += _Received;
      }
      }
    1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0146 ]   [ 15 queries used ]   [ Generated: 19.05.24, 19:35 GMT ]