原创 uIP之WebClient实现

2010-11-16 22:52 4428 10 11 分类: MCU/ 嵌入式

WebClient 实现的功能是登陆互联网,比如访问自己喜欢的某个网站。 网站是通过HTTP协议实现的。HTTP是一种应用层协议。基于TCP/IP。 默认的HTTP访问端口为80端口。


在之前移植好的工程上,需要添加以下文件:


resolv.c , uiplib.c , webclient-strings.c webclient.c文件。


resolv.c 是实现的是DNS,动态域名解析等。


webclient-strings.c主要实现HTTP的协议的解析。


Webclient.c是相应的APP程序。


之后,在uIPMain.c里添加:


    webclient_init();
    resolv_init();
    uip_ipaddr(ipaddr, 202,96,128,166); //DNS server
    resolv_conf(ipaddr);
    resolv_query("www.hao123.com");     //访问这个网站。


相应的修改一下以下函数:


void resolv_found(char *name, u16_t *ipaddr)
{
  u16_t *ipaddr2;
 
  if(ipaddr == NULL) {
    //printf("Host '%s' not found.\n", name);
  } else {
    //printf("Found name '%s' = %d.%d.%d.%d\n", name,
 //   htons(ipaddr[0]) >> 8,
 //   htons(ipaddr[0]) & 0xff,
 //   htons(ipaddr[1]) >> 8,
 //   htons(ipaddr[1]) & 0xff);
        webclient_get("www.hao123.com", 80, "/index.html");
  }
}


void
webclient_closed(void)
{
  my_printf2("connection closed\n");
}
void
webclient_aborted(void)
{
  my_printf2("connection aborted\n");
}
void
webclient_timedout(void)
{
  my_printf2("connection timed out\n");
}
void
webclient_connected(void)
{
  my_printf2("connected, waiting for data...\n");
}
void
webclient_datahandler(char *data, u16_t len)
{
   static uint16_t cnt;
 // my_printf2("got %d bytes of data.counter =%d \n", len,++cnt);
}


OK,编译成功之后下载到深蓝嵌入式网络开发板,就可以看到以下的结果了:


HTTP REQUEST 网站响应,开始收到WEB数据。。。


65b3e946-c41d-4cdc-b19b-54c57f5c0118.jpg

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户417301 2012-7-25 00:28

QQ:478980053 最近也在琢磨这个功能 有时间指点一下吗?
相关推荐阅读
用户1369714 2012-04-12 12:34
大家好,我是itspy,关于这个博客,请大家看过来!
大家好,我是itspy,关于这个博客...,很失望,以后不会用了 如果大家有什么问题,请到我的另一个博客去留言吧 我也很希望跟大家做交流,有什么技术问题,itspy会很乐意帮助的,新博客欢...
用户1369714 2011-08-07 14:35
uip 移植在rt-thread上的源码
*/本人在以前开发过程中移植uIP到RT-Thread实时线程系统,有需要用到项目中的朋友可以参考一下。 附件是源码包,在以太网驱动采用DM9000,驱动程序和移植文件uipif.c在源码包下(rt...
用户1369714 2011-01-13 10:32
Linux内核的社会视角--Mr. Process的一生
         Linux内核是一个无比复杂的系统,要想看清大致的脉络也非易事。其实,可以把运行中的Linux想像成一个人类的社会,当中的进程就是社会中的人。人有生老病死,进程有创建、异常、终止。人...
用户1369714 2011-01-08 12:39
RT-Thread Radio 网络播放器--初次零距离接触!
      今天很高兴, 收到了RT-Thread Radio套件,还有ffx和RT-Thread工作室写的新书《RT-Thread 实时操作系统 编程指南》。 如此令人快乐的事,如此高兴,实在是想不...
用户1369714 2011-01-05 15:43
如何编写linux的驱动程序
如何编写Linux的驱动程序编写linux驱动程序,应该是一件得心应手的事,因为linux是开源的,从上往下或从下往上,一切都是那么的光明磊落的呈现于眼前。只要你愿意,你可随意了解你所想知道的东西。L...
用户1369714 2010-12-28 10:12
Busybox制作Linux根文件系统
Busybox ——嵌入式Linux中的瑞士军刀利用busybox-1.13.0制作linux根文件系统(yaffs2)源码下载:http://www.busybox.net/downloads/操作...
EE直播间
更多
我要评论
1
10
关闭 站长推荐上一条 /3 下一条