.net下基于winpcap实现的网络分析程序(一)

其实,基于winpcap的网络分析程序已经遍地开花了,现在写这些似乎挺落伍的。而且,.net下的winpcap编程也有人已经做了封装,只是思路和我的不大一样。

但是无论怎么说,也是捣鼓了一阵子。多少有些心得,就一点一点写下来好了。程序的完整代码,等文章全写完了再发表好了。

我的思路是这样滴:用vc++.net对winpcap进行封装,实现数据包的抓取和解析,然后再通过c#进行调用,完成网络分析等功能。这一次,就说说我是如何用vc++.net对winpcap进行封装。

首先说下为什么要用vc++.net。在c#下面用DllImport不是很方便么?嗯,没错。事实上,我见到的那个老外用.net封装winpcap就是这么做的。这样做没有问题,也没有什么多少性能上的问题。

只是呢,因为我以前遇到过一次类似的问题,也是调用c的库,用DllImport搞完之后,总是出超级奇怪的问题。无奈之下,只好用vc++.net做了个桥。因为它向下能c,向上能.net,真是太好不过了。这一次,我也是为了避免出现以前的那个问题,就直接用了vc++.net。

好了,不废话了,正题开始:

首先建立一个vc++.net的类库(真是废话呀,呵呵),我起的名字是NetDriver。然后把下载到的winpcap解压,将里面的lib和include都拷贝到NetDriver文件夹下面。

接下来要修改一下项目属性。一个地方是要把“优化”关闭,因为优化之后的程序跑起来总是出错。另一个就是在附加依赖项里面,添加对lib文件夹下面的两个lib库的引用。

接下来,在NetDriver.h里面添加对winpcap的引用:
#include "include/pcap.h"

编译……呵呵,失败了吧。成功就奇怪了!!(不要咬我)

接着去include下面找到pcap.h文件,进行下面的修改:
第41行:将#include 改成 #include “pcap-stdinc.h”
第51行:将#include 改成 #include “pcap-bpf.h”
将第87行typedif struct pcap pcap_t删除,并在原来位置添加下面两行:
typedef int pcap;//这样改是因为pcap是个内部结构,上层直接调用会失败。反正是指针,用int代替就可以了。
typedef pcap pcap_t;

再编译……怎么,还失败了?那就不是我的问题了。看看是不是把NetDriver文件夹放在了中文路径下面。如果是就得换个地方了。(还有就是不要忘记安装winpcap啊!)老外歧视咱们中国人,shit!!目前也只能忍了。

到这里,就可以在vc++.net下面使用winpcap库了。用法,官方的教程就已经足够清楚了,我下回简单说说好了。这次就到这了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值