LwIP及其网络编程应用实例.ppt

  1. 1、本文档共106页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LwIP及其网络编程应用实例

线程管理的实现 由于uC/OS-II中每个任务都具有唯一的优先级,因此prio可以作为LwIP线程的一个标识,以区分不同的线程。 实际上sys_arch_timeouts( )正是通过这一标识来定位当前线程的超时等待链表的。 实验平台准备 软件平台最重要的部分是开发环境。 采用Renesas的High-performance Embedded Workshop进行编程开发。 为了方便调试,华中科技大学瑞萨高级嵌入式控制器实验室开发了专门针对Renesas M16C/62P单片机的监控程序。 通过该监控程序,将用户应用程序下载至ROM或者RAM,可以实现调试功能 嵌入式WEB服务器的设计 浏览器访问WEB服务器所使用的是HTTP协议。 客户(WEB服务器)通过HTTP协议向服务器发送请求 服务器根据HTTP协议对客户端发来的请求进行解码,并对其作出应答。 HTTP使用TCP作为运输层,客户在向服务器发送请求之前,要先与服务器的IP地址在端口80(HTTP的知名端口)建立一个连接。 服务器在端口80侦听进入的连接,并接受和处理客户的请求。 由于只是对LwIP协议栈进行测试和验证,因此设计的WEB服务器只对客户端的GET请求作出应答,而对其它请求一概不予理会。 嵌入式WEB服务器的设计 浏览器与WEB服务器交互的示意图。 图中浏览器运行在PC机(或支持浏览器的其它设备)上,WEB服务器运行在Renesas M16C/62P嵌入式开发平台上,二者通过网络进行连接。 所有的数据交互过程受TCP/IP协议族的制约。 嵌入式WEB服务器的实现 在进行了必要的初始化工作后,打开TCP的80端口并对该端口进行侦听。 一旦客户发起请求,则服务器接受并解析该请求。 如果请求正确,则服务器将相应的页面内容发送给客户端,而客户端(通常是浏览器)将该页面直观地显示出来。 至此,一次完整的交互过程已完成。服务器或者继续侦听更多的请求,或者主动关闭。 主流程图 主要程序的实现 (1)HTTP主线程 HTTP的主线程首先注册一个新的TCP连接,并将其绑定到80端口。 随后该连接进入侦听的状态,一旦接受到客户发起的连接请求,则调用process_connection( )函数进行处理。 主要程序代码如下: static void httpd_thread(void *arg) { struct netconn *conn, *newconn; ? /* Create a new TCP connection handle. */ conn = netconn_new(NETCONN_TCP); 主要程序的实现 ? /* Bind the connection to port 80 on any local IP address. */ netconn_bind(conn, NULL, 80); ? /* Put the connection into LISTEN state. */ netconn_listen(conn); ? /* Loop forever. */ while(1) { /* Accept a new connection. */ newconn = netconn_accept(conn); if(newconn != NULL) { /* Process the incomming connection. */ process_connection(newconn); /* Deallocate connection handle. */ netconn_delete(newconn); } OSTimeDly(2); } } 主要程序的实现 (2)处理连接的函数 实际的处理连接过程由process_connection( )函数完成。 该函数对客户请求进行解码:如为GET请求,则将网页内容发送给请求客户端;否则不予理会。 网页内容如下: /* This is the data for the actual web page. */ static char indexdata[] = htmlheadtitleM16C - uC/OS-II Webserver testpage./title \ /head \ body bgcolor=\darkGray\ text=\black\ link=\blue\ \ h1 align=center Welcome to this testpage. /h1 \ ph3This website is running LwIP on a M16C 16-bit microcontroller, using uC/OS-

文档评论(0)

sandaolingcrh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档