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数据。。。
用户417301 2012-7-25 00:28