⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcap.lc

📁 linux网络编程中的经典源码
💻 LC
字号:
/* include open_pcap */#include    "udpcksum.h"##  1 ##src/udpcksum/pcap.c###define CMD     "udp and src host %s and src port %d"##  2 ##src/udpcksum/pcap.c##void##  3 ##src/udpcksum/pcap.c##open_pcap(void)##  4 ##src/udpcksum/pcap.c##{##  5 ##src/udpcksum/pcap.c##    uint32_t localnet, netmask;##  6 ##src/udpcksum/pcap.c##    char    cmd[MAXLINE], errbuf[PCAP_ERRBUF_SIZE],##  7 ##src/udpcksum/pcap.c##        str1[INET_ADDRSTRLEN], str2[INET_ADDRSTRLEN];##  8 ##src/udpcksum/pcap.c##    struct bpf_program fcode;##  9 ##src/udpcksum/pcap.c##    if (device == NULL) {## 10 ##src/udpcksum/pcap.c##        if ((device = pcap_lookupdev(errbuf)) == NULL)## 11 ##src/udpcksum/pcap.c##            err_quit("pcap_lookup: %s", errbuf);## 12 ##src/udpcksum/pcap.c##    }## 13 ##src/udpcksum/pcap.c##    printf("device = %s\n", device);## 14 ##src/udpcksum/pcap.c##    /* 4hardcode: promisc=0, to_ms=500 */## 15 ##src/udpcksum/pcap.c##    if ((pd = pcap_open_live(device, snaplen, 0, 500, errbuf)) == NULL)## 16 ##src/udpcksum/pcap.c##        err_quit("pcap_open_live: %s", errbuf);## 17 ##src/udpcksum/pcap.c##    if (pcap_lookupnet(device, &localnet, &netmask, errbuf) < 0)## 18 ##src/udpcksum/pcap.c##        err_quit("pcap_lookupnet: %s", errbuf);## 19 ##src/udpcksum/pcap.c##    if (verbose)## 20 ##src/udpcksum/pcap.c##        printf("localnet = %s, netmask = %s\n",## 21 ##src/udpcksum/pcap.c##               Inet_ntop(AF_INET, &localnet, str1, sizeof(str1)),## 22 ##src/udpcksum/pcap.c##               Inet_ntop(AF_INET, &netmask, str2, sizeof(str2)));## 23 ##src/udpcksum/pcap.c##    snprintf(cmd, sizeof(cmd), CMD,## 24 ##src/udpcksum/pcap.c##             Sock_ntop_host(dest, destlen),## 25 ##src/udpcksum/pcap.c##             ntohs(sock_get_port(dest, destlen)));## 26 ##src/udpcksum/pcap.c##    if (verbose)## 27 ##src/udpcksum/pcap.c##        printf("cmd = %s\n", cmd);## 28 ##src/udpcksum/pcap.c##    if (pcap_compile(pd, &fcode, cmd, 0, netmask) < 0)## 29 ##src/udpcksum/pcap.c##        err_quit("pcap_compile: %s", pcap_geterr(pd));## 30 ##src/udpcksum/pcap.c##    if (pcap_setfilter(pd, &fcode) < 0)## 31 ##src/udpcksum/pcap.c##        err_quit("pcap_setfilter: %s", pcap_geterr(pd));## 32 ##src/udpcksum/pcap.c##    if ((datalink = pcap_datalink(pd)) < 0)## 33 ##src/udpcksum/pcap.c##        err_quit("pcap_datalink: %s", pcap_geterr(pd));## 34 ##src/udpcksum/pcap.c##    if (verbose)## 35 ##src/udpcksum/pcap.c##        printf("datalink = %d\n", datalink);## 36 ##src/udpcksum/pcap.c##}## 37 ##src/udpcksum/pcap.c##/* end open_pcap *//* include next_pcap */char   *## 38 ##src/udpcksum/pcap.c##next_pcap(int *len)## 39 ##src/udpcksum/pcap.c##{## 40 ##src/udpcksum/pcap.c##    char   *ptr;## 41 ##src/udpcksum/pcap.c##    struct pcap_pkthdr hdr;## 42 ##src/udpcksum/pcap.c##    /* 4keep looping until packet ready */## 43 ##src/udpcksum/pcap.c##    while ((ptr = (char *) pcap_next(pd, &hdr)) == NULL) ;## 44 ##src/udpcksum/pcap.c##    *len = hdr.caplen;          /* captured length */## 45 ##src/udpcksum/pcap.c##    return (ptr);## 46 ##src/udpcksum/pcap.c##}## 47 ##src/udpcksum/pcap.c##/* end next_pcap */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -