1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Pcapdot

Тема в разделе ".NET - программирование", создана пользователем vladimir7485, 20 дек 2012.

  1. vladimir7485

    vladimir7485 Гость

    Репутация:
    0
    Доброго времени суток.
    Использую библиотеку PCapDot.Net, конечная цель написать сниффер.
    Для начала решил запустить пример из библиотеке под Windows Forms.
    Вообщем, создал проект, внес нужный код:

    namespace WinPCap
    {
    public partial class Form1 : Form
    {
    IList<LivePacketDevice> allDevices;
    PacketDevice device;
    PacketCommunicator communicator;

    public Form1()
    {
    InitializeComponent();

    // Retrieve the device list from the local machine
    allDevices = LivePacketDevice.AllLocalMachine;

    if (allDevices.Count == 0)
    this.comboBox1.Text = "Устройств не обнаружено";
    else
    {
    for (int i = 0; i != allDevices.Count; ++i)
    {
    comboBox1.Items.Add((i + 1).ToString() + " " + allDevices.Description);
    }
    }
    }

    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    textBox1.Text = comboBox1.SelectedIndex.ToString();
    device = allDevices[comboBox1.SelectedIndex];
    }

    private void button1_Click(object sender, EventArgs e)
    {
    using (communicator = device.Open(65536, PacketDeviceOpenAttributes.Promiscuous, 1000))
    {

    // start the capture
    communicator.ReceivePackets(0, PacketHandler);

    }
    }

    public void PacketHandler(Packet packet)
    {
    richTextBox1.Text = "Time: " + packet.Timestamp.ToString() + "; Length: " + packet.Length.ToString() + "\n";
    }
    }
    }

    Консольное приложение работает, а у меня почему то после нажатия кнопки, т.е. после communicator.ReceivePackets(0, PacketHandler);
    программа виснет...
    Что не так то??? Ведь все скопировал.
    Единственное функция PacketHandler в консоле описана так
    private static void PacketHandler(Packet packet)
    В чем может быть косяк.
    PS: может тут элементарное решение, но сам давно в NET не прогал, а проект горит, долго ковыряться не могу, поэтому прошу не злиться за эдакие вопросы...

    Добавлено: Прошу прощения, случайно создался второй пост, была какая то ошибка просто. Прошу удалить. Спасибо.
     

Поделиться этой страницей