Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




 
Ответить Новая тема 
> Снифер на C# с Raw сокетом ловит не все пакеты, пропускает часть трафи, странная работа сырых сокетов
zklient
Вставить ник
сообщение 2:06:2008, 10:39
Цитата Ответить 


Новенький
*

Группа: Новенький
Сообщений: 1
Регистрация: 2:06:2008
Пользователь №: 17 750



Репутация: - 0 +


Снифер на C# с Raw сокетом ловит не все пакеты.
Копирую фильм по сети а снифер (только считает количество пакетов и объём переданных данных) неправильно указывает объём сетевого трафика и количество пакетов (кол-во проверяю по данным в состоянии сетевого интерфейса). Может кто встречался с таким глюком?

Фрагмент кода:
Код
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


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 29:08:2008 - 01:23
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net