Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Запускаем цикл ожидания IP-пакета:
for(;;) {
count=read(fddev,(char *)&data,sizeof(struct data_pkt));
if(count < 0) {
perror("count");
return (-1);
}
if(count == 0) continue;
if(count > 0) {
close(fddev);
break;
}
}
Как только приходит пакет, закрываем устройство и выходим из цикла.
Информируем о приходе пакета и отображаем данные о нем:
printf("пакет получен. ");
printf("Длина пакета - %d ",data.len);
printf("Длина IP-заголовка - %d ",data.iph_len);
Запишем в файл содержимое полученного пакета (поле buff структуры struct data_pkt):
d=open("data.file",O_CREAT|O_TRUNC|O_RDWR,0600);
if(!d) {
perror("data.file");
return (-1);
}
if(!(write(d,data.buff,data.len))) {
perror("data.file");
return (-1);
}
close(d);
Первые (data.iph_len) байт массива data.buff – это заголовок принятого IP-пакета. Скопируем его в структуру struct iphdr и отобразим данные:
memcpy(&ip,data.buff,data.iph_len);
printf(" Source IP - %s ",inet_ntoa(ip.saddr));
printf("Destin. IP - %s ",inet_ntoa(ip.daddr));
printf("Протокол - %d ",ip.protocol);
printf("Длина заголовка - %d ",ip.ihl<<2);
printf("Длина пакета - %d ",ntohs(ip.tot_len));
return (0);
}