Начал писать приложение для мониторинга сетевых пакетов с использованием Socket-ов и SharpPcap.

Используется Visual Studio Express 2010 и Net Framework 2.0

Скачать: [download id=»19″]

Исходники через SVN теперь не доступны.
Выложил их на сайт, скачать [download id=»26″]

На текущий момент в 5 ревизии:

Описан базовый класс для работы с сетью

    abstract class NetworkBase
    {
        protected device[] devices;

        //ВОзвращает Количество поддерживаемых устройств
        public int CountDevices
        {
            get
            {
                if (devices == null)
                    return 0;
                else
                    return devices.Length;
            }

        }    

        //Инициализация
        abstract public int Init();
        //1. Получаем список сетевых адаптеров в системе

        abstract public void Close();

        //Начать сбор пакетов
        abstract public int StartCapture(int IdDevice);

        //Остановить сбор пакетов
        abstract public int StopCapture();

        abstract public bool IsSupport();

        //Возвращает описание по индексу.
        virtual public device GetInfoAboutDeviceFromIndex(int index)
        {
            return devices[index];
        }
    }

От него наследуются два класса, первый реализует работу через сокеты:

   class RawSocket: NetworkBase
    {
        SocketClass mainSocket;
        //Инициализация
        public override int Init()
        {
            //Создаем скласс сокета
            mainSocket= new SocketClass();
            //Получаем список всех сетевых устройств в системе
            devices = mainSocket.GetListAllAdapters();
            return 0;
        }

        //Поддерживается ли
        public override bool IsSupport()
        {
            throw new NotImplementedException();
        }

        public override void Close()
        {

        }

        //Начать сбор пакетов
        public override int StartCapture(int IdDevice)
        {
            return 0;
        }

        //Остановить сбор пакетов
        public override int StopCapture()
        {
            return 0;
        }
}

Второй класс для работы через SharpPcap:

    class SharpPcap:NetworkBase
    {
        PcapClass pcap;

        //Инициализация
        public override int Init()
        {
            pcap = new PcapClass();
            devices =  pcap.GetListAllAdapters();
            return 0;
        }

        //Поддерживается ли
        public override bool IsSupport()
        {
            throw new NotImplementedException();
        }

        public override void Close()
        {

        }

        //Начать сбор пакетов
        public override int StartCapture(int IdDevice)
        {
            return 0;
        }

        //Остановить сбор пакетов
        public override int StopCapture()
        {
            return 0;
        }
    }

Затем в зависимости от выбора пользователя выбираем с чем работать

Network.NetworkBase network;
if (radioButton1.Checked)
      network = new Network.Sockets.RawSocket();
else
       network = new Network.SharpPcap.SharpPcap();
network.Init();

 

NetworkShow приложение для мониторинга сети
Метки:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и соглашаюсь c политикой конфиденциальности *