想好好的了解lwip协议栈,想把其移植到windows平台上来,用于代替windows自带的tcp/ip协议栈,即不用windows的socket接口,而用lwip提供的接口实现tcp/ip的一些应用。有人调试成功过lwip-win32-msvc-0.1 吗?我调试的时候开始有一些问题,后来一个个解决了。但是运行后看不到有任何的效果。
解决方案 »
- Xtreme ToolkitPro 2011 (15.2.1)
- 关于数组与指针的讨论
- 求从IHTMLDocument2获取flash地址的代码
- 请教有关VC下解析XML会Down机的问题!!!
- 菜鸟求助,不知用什么方式实现
- word文档(.Doc)怎么转化成文本文件(.txt)啊
- 请教:SafeArray内存入BSTR类型数据,为何SafeArrayGetElement()出来却出现非法错误?
- 求 用读文件的 形式 来确定所要加载的DLL
- 我的程序为何不能有两个ToolBar?
- 一个COM的调试问题?
- 为什么点击按钮后,不显示非模态对话框??
- 如何让对话框中的一个button按钮具有电脑键盘上delete键的功能
一:下载lwip的源码,在windows上重新组织文件架构,然后进行编译。刚好美国已经有人做了这样面的工作,所以就先用一下咯。毕竟一开始要做这方面的工作,还是有难度的。可以下载lwip-win32-msvc-0.1.zip文件。网络上有很多这样的下载连接,但是都不好用(动不动就要你去注册,花了时间注册好了本以为可以下载了,没想到下载时候提示,积分不够,需要积分可以啊,买卡充值什么的,烦哪。)。官方网也连接不上,后来发现在sina爱问里面的共享里面可以下载,很方便的哦。下载完了之后解压就可以用了。用vc6打开就可以了。里面有两个工程,一个是Lwip4工程,编译后是lib库,供上层应用程序使用;另一个工程是test,是测试程序。分别编译,lwip4可以顺利的编译通过,但是test工程编译的时候会遇到问题: (1)找不到packet32.h文件。解决的办法是到官网http://www.winpcap.org/devel.htm上下载winpcap的开发包Download WinPcap 4.0.2 Developer's Pack,连接是http://www.winpcap.org/install/bin/WpdPack_4_0_2.zip 。下载之后解压即能看到一系列的目录,从include目录下就能找到packet32.h,以及packet32.h文件里include的devioctl.h,一起拷贝过来到工程目录里面。另外还要到Lib文件夹中拷贝packet32.h的实现lib文件packet.lib,然后加到工程中来。问题就迎刃而解了。(2)typedef struct npf_if_addr {
struct sockaddr_storage IPAddress; ///< IP address.
struct sockaddr_storage SubnetMask; ///< Netmask for that address.
struct sockaddr_storage Broadcast; ///< Broadcast address.
}npf_if_addr;会报packet32.h中上述结构体中的sockaddr_storage未定义:error C2079: 'IPAddress' uses undefined struct 'sockaddr_storage解决这个问题,可以自己在packet32.h中定义该结构体:#ifndef _SS_PAD1SIZE
struct sockaddr_storage {
u_char sa_len;
u_char sa_family;
u_char padding[128];
};
#endif 或者sockaddr_storage 改成 sockaddr 也可以解决问题。(3)pktif.c(191) : error C2065: 'OID_802_3_PERMANENT_ADDRESS' : undeclared identifierpktif.c(199) : error C2065: 'NDIS_PACKET_TYPE_ALL_LOCAL' : undeclared identifier报上述两个错误,是因为这两个变量是在Ntddndis.h文件中定义的,该头文件也是winpcap开发包中的文件,所以如同(1)需要从开发包inlude目录下把该文件拷贝到工程里来,同时在pktif.c文件头加上#include <Ntddndis.h> 这样就可以解决该问题。
IP4_ADDR(&gw, 192,168,2,1);
IP4_ADDR(&ipaddr, 192,168,2,250); //windows 本机的IP是192.168.2.114,即两个设置成IP不一样
IP4_ADDR(&netmask, 255,255,255,0);
然后在IE浏览器中输入地址:http://192.168.2.250 对lwip架设的服务器程序进行访问,可是服务器程序没有任何反应。有哪位大侠在windows上调试过该协议栈,请多指教。
qq 1064405061