loopupdev
int main()
{
char err_buf[PCAP_ERRBUF_SIZE],
*device;
device = pcap_lookupdev(err_buf);
if (device)
printf(
"success: device: %s\n", device);
else
printf(
"error: %s\n", err_buf);
return 0;
}
pcap_lookupdev这个函数返回的是网络接口的字符串。 编译:gcc pcap_lookupdev.c -o pcap_lookupdev -lpcap 输出:success: device: eth1
pcap_next
int main()
{
char err_buf[PCAP_ERRBUF_SIZE],
*str_device = NULL;
pcap_t
*pcap_device;
struct pcap_pkthdr packet;
const u_char
*str_pkt;
str_device = pcap_lookupdev(err_buf);
if (str_device)
printf(
"success: device: %s\n", str_device);
else
printf(
"error: %s\n", err_buf);
pcap_device = pcap_open_live(str_device,
65535,
1,
0, err_buf);
if (!pcap_device) {
printf(
"error: pcap_open_live: %s\n", err_buf);
exit(
1);
}
str_pkt = pcap_next(pcap_device, &packet);
if (!str_pkt) {
printf(
"did not capture a packet\n");
exit(
1);
}
printf(
"packet length=%d\n", packet.len);
printf(
"number of bytes=%d\n", packet.caplen);
printf(
"recieved time=%s\n", ctime((const time_t
*)&packet.ts.tv_sec));
for (i =
0; i < packet.len; i++) {
printf(
" x", packet[i]);
if ((i +
1) %
16 ==
0)
printf(
"\n");
}
printf(
"\n\n");
pcap_close(pcap_device);
return 0;
}
参考文章
转载请注明原文地址: https://ju.6miu.com/read-669488.html