小盒子的小盒

【原创】关于Lwip的例程

0
阅读(12672)

周六晚上一位网友加我QQ与我聊到有关Lwip的问题,他说对于一个刚刚接触Lwip的他,对于整个过程还不是很清楚。让我帮写一个Lwip的例子程序,从初始化到发送数据、接收数据。他们公司的需求是想做一个客户端,往服务器发送数据,但是在对于网上的一些资料,大部分都是Lwip做的是服务端。一个基于web的程序。虽然大体上似乎相同,可对于初学者而言,肯本就不能让该程序移植成自己所需要的功能。

下面我将基于以太网的Lwip这个程序的例子程序写出来,供给初学者参考。

/*
*******************************************************************************
*        SmallBoxLwIP
*Description: LwIP函数入口
*Arguments : 无
*Returns : 无
*Note  : V1.0 by Small.Box at 2007.02.14
*******************************************************************************
*/


void SmallBoxLwIP(void *arg)
{
 struct netconn *conn;
 int i,length;
 unsigned char LD_Send_BUF[500];
 unsigned char *pbData;
 pTCPCONN tcpconn;
 struct  LocalIPconfig Localipconfig;
 
 for(i=0;i<500;i++) {
      LD_Send_BUF[i]=0x55;
 }

//为了让大家看的更清楚,以下设置本地IP地址和远程IP地址将采用最直观的方式,还有其他简单的方法,见以前发表过的文章。

//设置本地IP地址

 Localipconfig.ipaddr[0] = 192;
 Localipconfig.ipaddr[1] = 168;
 Localipconfig.ipaddr[2] = 2;
 Localipconfig.ipaddr[3] = 2;

//设置本地网关
 Localipconfig.gateway[0] = 192;
 Localipconfig.gateway[1] = 168;
 Localipconfig.gateway[2] = 2;
 Localipconfig.gateway[3] = 1;
 //设置本地的子网掩码
 Localipconfig.mask[0] = 255;
 Localipconfig.mask[1] = 255;
 Localipconfig.mask[2] = 255;
 Localipconfig.mask[3] = 0;
 //设置服务端的IP地址
 tcpconn->ipaddr[0] = 192;
 tcpconn->ipaddr[1] = 168;
 tcpconn->ipaddr[2] = 2;
 tcpconn->ipaddr[3] = 1;
 tcpconn->port = 5000;    //设置端口号

//初始化Lwip

 LwIPInit();

//初始化以太网
 SetupLwIP_Ethernet(Localipconfig);
 while(1) {
     conn = OpenTCPIPDev(tcpconn);    //打开TCP链接
     while(1) {
         length = ReadTCPIPDev(conn,&pbData);    //读取数据
         if(length > 0) {
             WriteTCPIPDev(conn,LD_Send_BUF,200);      //发送数据
             CloseTCPIPDev(conn);
             OSTimeDlyHMSM(0,0,2,0);   
             break;
        }
        OSTimeDlyHMSM(0,0,2,0);    
     }
   }
}

各位请注意以上程序红色部分的IP地址,为什么本地的网关和服务端的IP地址是相同的呢?

下面我将我测试的环境介绍一个

本人电脑操作系统Windows XP

网络配置:三块网卡

IP地址分别为:192.168.0.52   192.168.2.1 192.168.8.52

192.168.0.52  走公司的服务器连接外网;

192.168.2.1    连接我们的产品终端,也就是带有LWIP协议的终端

192.168.8.52  连接路由走外网。

具体只用到那一块网卡。为了测试方便,故将我们的终端连接第二块网卡。你也可以连接到你们公司的局域网,设置好IP地址,就以了。这些都取决于你的测试网络情况而定,若不明白设置,请找一本有关网络技术的书籍作为参考吧。

由于本人的表述能力有限,对于以上写的程序和阐述的语言有什么不明白的地方,请在下面给我留言。我会及时给您回复。谢谢!!!!