本帖最后由 **kfu 于 2012-3-22 00:35 编辑
我的硬件连接如下图,stm32作为网页服务器,电脑和stm32都是直接接到路由器的LAN口的。手机通过WI-FI访问stm32的web。
http网页默认是80端口,这个可以正常访问,我用电脑可以访问,用手机WI-FI也可以正常访问。
现在问题出来了,我换了一个端口,换成85端口,换成85端口以后发现用IE和手机都可以正常访问,但是火狐显示的是网页源码,不能正常解析网页。
端口配置函数如下:
void httpd_init(void)
{
struct tcp_pcb *pcb;
pcb = tcp_new();
tcp_bind(pcb, IP_ADDR_ANY, 80);
pcb = tcp_listen(pcb);
tcp_accept(pcb, http_accept);
}
最后又试了一下发现用默认的80端口的时候,火狐和IE包括手机都可以正常访问。
我后来多试了几个端口发现只有默认80端口是正常的。其他端口的话火狐会不正常,例如这里我用84端口,网页类型不是text/html而是 text/plain。但是我的meta是正确的啊,
<meta http-equiv=\"content-type\" content=\"text/html; charset=gb2312\"/>
火狐显示的页面信息如下:
不清楚到底是哪里的问题,正常情况下网页正常显示的话页面信息应该是下面这个啊:
总结一句话,就是:这里不能换端口吗。为什么一换端口火狐就不能正常解析网页了呢,是火狐浏览器的原因,还是STM32返回的数据有问题呢。
网页源码在此(utf-8和GB2312一样的,都试过了):
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">"
"<html xmlns=\"http://www.w3.org/1999/xhtml\">"
"<head>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
"<title>ST MCU</title>"
"<meta http-equiv=\"MSThemeCompatible\" content=\"Yes\" />"
"<meta http-equiv=\"X-UA-Compatible\" content=\"IE=EmulateIE7\" />"
"</head>"
"<body>"
"<div>"
"123"
"</div>"
"</body>"
"</html>" |