没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-08-28 10:21:13.000|阅读 895 次
概述:由于是Win32平台的开发,#ifndef WIN32...#else那段都是没用的。真正要使用到的是#include
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
还是按照“winpcap使用系列” 一步步学习。先看文章里头包含的头文件。
由于是Win32平台的开发,#ifndef WIN32...#else那段都是没用的。真正要使用到的是#include<winsock.h>。首先声名一下,我做出来的测试程序是MFC的窗口程序。而MFC程序中的自动生成的stdafx.h文件中有这么一句 #include <afxwin.h> // MFC 核心组件和标准组件,而在afxwin.h里头有就winsock2.h的声名。事实上winsock与winsock2是干同样活的,不过是新旧之分,所以假如你在程序中加上#include<winsock.h>的话就必然会出现函数同名的错误(winsock与winsock2很多同名的函数)。因此在我的程序中只须声名#include "pcap.h"。
接着,看下代码。
这些使用到一些控制台程序的函数,不过对于MFC程序没有大碍。先不说ifprint和iptos的作用,我们来看来pcap_if_t这个结构。
在pcap.h中它有一个另名pcap_if,至于为什么要改名字我也不太清楚。(为了说明这个一个type?)在官方的文档中(...\WpdPack\docs\html\structpcap__if.html)对pcap_if进行如下定义:
* | |
if not NULL, a pointer to the next element in the list; NULL for the last element of the list | |
char * | |
a pointer to a string giving a name for the device to pass to | |
char * | |
if not NULL, a pointer to a string giving a human-readable description of the device | |
* | |
a pointer to the first element of a list of addresses for the interface | |
u_int | |
PCAP_IF_ interface flags. Currently the only possible flag is PCAP_IF_LOOPBACK, that is set if the interface is a loopback interface. |
next是对下一个设备驱动的指针,name是本驱动的名字(基本上是一些不知所云的数字),description是驱动的描述(如Realtek RTL8169/8110 Family Gigabit Ethernet NIC,这个程序员就比较清楚了),pcap_addr则是另一个pcap.h中定义的结构,最后的flags目前为0。 官方文档对pcap_addr定义如下:
* | |
if not NULL, a pointer to the next element in the list; NULL for the last element of the list | |
sockaddr * | |
a pointer to a struct sockaddr containing an address | |
sockaddr * | |
if not NULL, a pointer to a struct sockaddr that contains the netmask corresponding to the address pointed to by addr. | |
sockaddr * | |
if not NULL, a pointer to a struct sockaddr that contains the broadcast address corre sponding to the address pointed to by addr; may be null if the interface doesn't support broadcasts | |
sockaddr * | |
if not NULL, a pointer to a struct sockaddr that contains the destination address corre sponding to the address pointed to by addr; may be null if the interface isn't a point- to-point interface |
其中,addr为IP地址,netmask为子网掩码(以上两个都为平时常用的网络连接设置),broadaddr为广播地址(说明参照百度百科),dstaddr为目标地址(具体使用不太清楚,什么叫点对点接口?什么情况下会有这个接口?哪位高人给我指点一下!)。以上4部分都是sockaddr这个结构,它的定义在ws2def.h中。
上面的0x0600是vista的版本号,就是说当系统为XP或以下的时候用u_short的定义(其实ADDRESS_FAMILY也就是个ushort,只是换个名字)。还是回来看下它的结构,主要是后面的sa_data[14],这个参考,里面说得很详细。下面是截图,可以很清楚地看到前2个字节都是0,接下来的4个是有值的,后面的都是0。
实际上那4个有值的字节就是32位的地址,如192.168.0.1等。
现在让我们回来看那两个函数ifprint及iptos。在看完pcap_if_t等结构的说明后,想必你也看出来ifprint就是对pcap_if_t结构的解析,iptos就是对sockaddr的解析了吧。
目前为止还没有自己写的东西,谁叫我还是个新手,一步步学吧。下一步是做一个可以测试在1000M网卡下WinPcap发送能力的极限能到多少的小程序,以前100M的话好像只能到60M。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@dpuzeg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢