Delphi Опубликовано 4 мая, 2008 Жалоба Поделиться Опубликовано 4 мая, 2008 (изменено) Здравствуйте, пишу я программу для получения статистических данных по взаимодействию компютеров между собой, тоесть к примеру необходимо узнать какие компютеры с какими взаимодействуют, сколько между собой данных передают ..., но это всё не очень сложно, сложность пока заключается в том чтобы получить пакет из сети. Тоесть я установил необходимый драйвер, winpcap, подключил необходимые хидеры и либы. У меня в программе уже есть определение сетевыех карт. перевод карты в реждим чтени всех пакетов и получение длины пакета, но самого пакета нету, я делаю таким образом #include "h/pcap.h"struct lan_ad // структура для хранения адаптеров{char *adapter; //описание адаптераchar *name; //имя адаптераbpf_u_int32 mask,Net;};pcap_t *fp; char *data;char error[PCAP_ERRBUF_SIZE];int len;struct lan_ad net[5];void packetHandler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data) //обработка принятых пакетов{head=header->len;}__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) //при загрузке формы получаем имена и информацию про адаптеры{pcap_if_t *alldevs,*d;int inum=0,i;i=pcap_findalldevs(&alldevs,error);ComboBox1->Clear();for(d=alldevs;d;d=d->next) // выводим информацию на экран { net[inum].name=d->name; net[inum].adapter=d->description; pcap_lookupnet(d->name,&net[inum].Net,&net[inum].mask,error); ComboBox1->Items->Add(net[inum].adapter); inum++; }len=inum;}void __fastcall TForm1::Button1Click(TObject *Sender) //получаем пакеты{char *filter=NULL;struct bpf_program fcode;fp=pcap_open_live(net[ComboBox1->ItemIndex].name,0,1,20,error);pcap_loop(fp,1,packetHandler,NULL);} в функцие packetHandler третий параметр это ссылка на пакет. Для того чтобы получитьп акетт его необходимо конвертирвоать в структуру, а есть ли какойто способ получить просто пакет потоком в виде: 00 18 f3 5b f4 b9 00 e0 4e 09 c3 d4 08 00 45 0000 28 d2 c1 40 00 80 06 cd dc ac 0a 01 0f ac 0a01 0e 1f 90 06 aa f7 ca f6 92 e6 42 ce 47 50 10fb b4 90 cb 00 00 00 00 00 00 00 00 как можно получить это с помощью вышеописанной функции или каким либо другим способом, используя только компоненты winpcap P.S. Для разработки использую CodeGear Rad Studio 2007 c++ Изменено 4 мая, 2008 пользователем Delphi Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти