网络编程学习日记 (1)

很多函数都是用的WinPcap的,所以我又抓紧时间看WinPcap的入门知识。

WinPcap开发包下载:http://www.winpcap.org/install/default.htm

里面有开发者包Developer’s Pack和普通使用的安装程序,宽带上网助手就是普通的安装包,而开发要使用的则是Developer’s Pack。

下来之后,安装到某个目录,然后配置VC,把那个目录的include和lib两个目录放到VC的选项->目录里面。

WinPcap目录下有doc文档,里面的东西相当全面。我运行了两个,都不能直接运行。

第一个简单程序是获取网卡适配器信息,里面一个函数pcap_findalldevs_ex找不到,网上资料说是因为这个函数属于远程网卡获取,它 的声明在#include "remote-ext.h"里面,加上去就可以运行了。

第二个程序错误更多,

F:/学习/网络/WiPcap8_08_20/2/Cpp1.cpp(155) : error C2065: ’socklen_t’ : undeclared identifier
F:/学习/网络/WiPcap8_08_20/2/Cpp1.cpp(155) : error C2146: syntax error : missing ‘;’ before identifier ’sockaddrlen’
F:/学习/网络/WiPcap8_08_20/2/Cpp1.cpp(155) : error C2065: ’sockaddrlen’ : undeclared identifier
F:/学习/网络/WiPcap8_08_20/2/Cpp1.cpp(164) : error C2065: ‘getnameinfo’ : undeclared identifier
F:/学习/网络/WiPcap8_08_20/2/Cpp1.cpp(170) : error C2065: ‘NI_NUMERICHOST’ : undeclared identifier

错误根由是因为WinPcap支持ipv6,而VC的winsock2.h太老了,很多结构都没有被支持,所以产生错误。网上有人说可以用VS新版 本调试,我电脑里面是VS2008,但是仍然产生错误

_vsnprintf属性与生命不匹配,网上没有合适的解决方案,我感觉是WinPcap的某个头文件与stdio.h参数不匹配。

既然VS也无法通过,我实在没能力去修改WinPcap的头文件,所以就用最后一个方案,使用VC6.0的最新的PlatForm SDK开发包,里面包含了新的头文件,就可以支持WinPcap了。

有人说PSDK只有Windows2003的版本,我在微软里面找到了WinXPSP2的PSDK。

网址如下

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm

里面好几个Cab,网页里面有完整的安装说明。

我正在下,搞好之后如果能用再说。

弄好了,下面是PlatFormSDK安装步骤

(1)安装过程:

CMD运行PSDK-FULL.bat,参数为一个目录,里面会被解压缩安装包,然后Setup,一路Next就可以了。

(2)配置过程

打开Visual C++6.0,在选项里面连接,把PSDK安装后的include和lib加入相应的位置。

特别注意,要把这些目录的顺序调高,我直接放到了最高层去了。

呵呵,编译一下,通过了,好Happy啊。

1.编译时候会出现函数问题
‘pcap_findalldevs_ex’ : undeclared identifier
‘PCAP_SRC_IF_STRING’ : undeclared identifier
‘pcap_open’ : undeclared identifier
‘PCAP_OPENFLAG_PROMISCUOUS’ : undeclared identifier
‘=’ : cannot convert from ‘int’ to ’struct pcap *’
等一系列函数找不到的问题,导致这些问题的关键在于他们的函数声明并不包含在pcap.h这个

头文件里面,而是包含在remote-ext.h这个函数里面,所以只需要在
#include "pcap.h"后面加上
#include "remote-ext.h"
就可以编译通过了。
网上有网友戏称说是WinPcap 开发小组故意做的恶作剧或者是撰写doc说明时候忘记加入了
= =#

2.出现连接错误
Cpp3.obj : error LNK2001: unresolved external symbol __imp__ntohs@4
Debug/Cpp3.exe : fatal error LNK1120: 1 unresolved externals
一般添加工程只需要添加wpcap.lib这个库文件,而在分析数据包这段代码里,光这个头文件

已经不够了,需要再添加ws2_32.lib这个头文件。其实这个在WinPcap的配置VC里有说明,但

是以前懒,都只用wpcap.lib

3.关于程序运行时候是否需要WinPcap的支持,我无法测试出结果,因为学校上网方式的限制

,所有系统都是有WinPcap运行库文件的,待会儿去网上找找相关资料呢

4.暑假一直看的是英文说明文档,很吃力,最近在搜狗随便一搜,居然发现了有现成翻译好的

中文说明文档,翻译挺不错的,可以去搜索下一下。

终于开始开网络编程 课,感叹一下WinPcap的强大,还是停留在用户层的编程,完全没能力看

核心的源代码。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值