我们已经知道了如何获得网卡的信息,现在开始真正的工作:打开网卡并捕获数据流。在这
里将写一个打印流经网络的每个数据包信息的程序。
打开网卡的功能是通过
pcap_open_live()
来实现的它有三个参数
snaplen
,
promisc
,
to_ms
。
snaplen
用于指定所捕获包的特定部分,在一些系统上(象
xBSD and Win32
等)驱动只给出
所捕获数据包的一部分而不是全部,这样就减少了拷贝数据的数量从而提高了包捕获的效
率。
promisc
指明网卡处于混杂模式,在正常情况下网卡只接受发往它的包,而发往其他主机的
数据包则被忽略。相反当网卡处于混杂模式时,它将接收所有的流经它的数据包。这就意味
着在共享介质的情况下可以捕获到发往其它主机的数据包。大部分的包捕获程序都将混杂模
式设为默认,在下面的例子里也将网卡设为混杂模式。
to_ms
参数指定读数据的超时控制,超时以毫秒计算。当在超时时间内网卡上没有数据到来