想好好的了解lwip协议栈,想把其移植到windows平台上来,用于代替windows自带的tcp/ip协议栈,即不用windows的socket接口,而用lwip提供的接口实现tcp/ip的一些应用。有人调试成功过lwip-win32-msvc-0.1 吗?我调试的时候开始有一些问题,后来一个个解决了。但是运行后看不到有任何的效果。

解决方案 »

  1.   

    已经解决的问题:
    一:下载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>  这样就可以解决该问题。
      

  2.   

    仍未解决的问题:(1)lwip-win32-msvc-0.1源码已经建立了一个简单的Http服务器程序,但是运行之后,从IE里输入地址后服务器程序并没有收到任何的信息。即:通过lwip协议栈设定了IP如下:
    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上调试过该协议栈,请多指教。
      

  3.   

    我也在弄Windows下的tcp/ip协议栈的移植 希望可以交流下
    qq 1064405061