Tag: winpcap

为什么winpcap需要运行.lib和.dll?

规格可以在这里看到: http://www.winpcap.org/docs/docs_40_2/html/group__wpcapsamps.html 这很奇怪, .lib或.dll足够IMO,为什么它需要两者?

如何使用winpcap分配内存以发送高性能的大型pcap文件(大小大于可用内存)?

我使用了winpcap示例中的代码发送pcap文件(来自此链接的 winpcap文档的原始代码) 它可以很好地发送一个小的pcap文件,但如果我试图发送一个大的pcap文件(大于可用内存大小说2 Gb)它肯定会失败。 此代码用于在内存中分配文件的大小,以便稍后发送 caplen= ftell(capfile)- sizeof(struct pcap_file_header); … /* Allocate a send queue */ squeue = pcap_sendqueue_alloc(caplen); 问题是如何使这个工作适用于大型文件(Gb或大于可用于分配的最大内存空间)? 我应该只分配100 Mb,然后发送队列然后接下来的100Mb? 如果是,什么是适当的缓冲区大小? 怎么做? 这里一个重要的问题是发送此文件的性能需要尽可能快地完成(我正在发送video数据包)。 总之如何管理内存来实现这一目标? 有人会有适当的解决方案或建议吗? 示例代码中的代码段(此问题的不必要代码替换为…) … #include #include … void main(int argc, char **argv) { pcap_t *indesc,*outdesc; … FILE *capfile; int caplen, sync; … pcap_send_queue *squeue; struct pcap_pkthdr *pktheader; u_char *pktdata; … […]

如何将指向成员函数的指针传递给C函数?

可能重复: 使用C ++类成员函数作为C回调函数 我正在使用C库(winpcap)编写面向对象的库。 我需要传递当网络数据包作为函数指针到达时调用的回调函数。 我想将一个成员函数指针传递给winpcap,以保持我的设计对象的方向,并允许不同的对象接收不同的数据包。 但是据我所知,成员函数具有不同的调用约定,因此不能传递给C函数。 有没有办法来解决这个问题。 我使用boost :: bind进行的实验(除了试验和错误之外我几乎无法使用)并不富有成效。 有没有办法改变成员函数的调用约定? 这是我现在使用的回调函数的定义以及它实际传递给winpcap的定义 void pcapCallback( byte* param, const struct pcap_pkthdr* header, const byte* pkt_data ); pcap_loop( adhandle, 0, pcapCallback, NULL ); pcap_loop只接受函数的名称(目前在全局范围内)。 这是函数指针参数的定义( pcap_loop的第3个参数)。 由于这是第三方代码,我无法真正改变这一点。 我必须有一个可以采用这种forms的成员函数: typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *, const u_char *); 据我所知,成员函数将使用thiscall,而c函数指针需要一个cdecl

如何劫持所有本地http请求并使用c提取url?

我应该去哪个方向( 图书馆 , 文件 )? UPDATE 有人可以说明如何使用winpcap来完成这项工作吗? 更新2 如何validation数据包是否为HTTP?