lwip1.3.2+ucosII服务器与浏览器连接问题bug解决
来源:互联网 发布:erp企业管理系统源码 编辑:程序博客网 时间:2024/06/07 04:01
最近利用lwip1.3.2+ucosII在stm32f207搭建了web服务器,实现功能并不容易,但最难的却是功能实现之后查找bug的过程,这个过程可以说相当辛苦,但经历了这些我发现我也学习成长了很多,这里主要分享下我遇到的bug,以及解决方式,首先说明下我搭建的服务器带基本认证服务。1. phy驱动初始化问题 因为stm32f207中引脚问题我的项目只能采用RMII总线,这时就需要修改默认系统时钟需要修改为100MHZ(见system_stm32f2xx.c)。 参考DP83848的CLK说明,可以知道输入管脚CLK(端口PA8)的时钟要为50MHZ,PA8位于APB2区域,在参考system_stm32f2xx.c中程序,PCLK = SYSCLK/2 可知系统时钟需要配置到100MHZ,如果系统时钟达不到100MHZ,如STM32F107,则需要使用MII总线。 2. 在某些浏览器在初次登录会弹出两次登录框体(如遨游),且有时会卡死服务器 通过WireShark软件抓包分析,几乎所有浏览器在请求完一张完整网页后会继续请求favicon.ico(网站头像,如下),用于放置在地址栏或者收藏夹的首位,且有时该请求报会不附带用户的认证信息,因为它并不存在于服务器端用户设计的网页中(一般情况下),因此客户端可能会一直请求,造成服务器卡顿,因此在服务器的http层代码中要对该请求独立出来处理。 3 .win7+IE8访问服务器是偶尔会卡死 win7+IE8访问服务器时,当缓存已经有图片时,会发送[RST, ACK] TCP包 目前我所用的版本的lwip的tcp层对于该数据报的处理并不好,我测试了下,接收到RST,ACK包必卡死 经过仔细排查,我发现了问题关键,在处理[RST ACK]复位包的回调函数中err_tcp中,将连接的conn->err 置成了ERR_RST, 而在线程中调用的netconn_accept()和netconn_delete()并未修改这个参数,而在http层处理函数中将conn->err作为判断接收数据的一个标准,从而导致再也接不到数据。 因此在复位连接处理完毕(即在err_tcp)末尾后要添加conn->err = ERR_OK,不知道是不是lwip的内在缺陷。
0 0
- lwip1.3.2+ucosII服务器与浏览器连接问题bug解决
- 浏览器与服务器连接
- 浏览器问题与解决
- 浏览器针对单服务器连接数问题
- 浏览器针对单服务器连接数问题
- 远端连接服务器无法绘图的bug怎么解决
- IE6浏览器的bug问题及相关解决的方法
- 解决命令行无法连接mysql服务器问题
- 解决Xcode 连接服务器出错问题
- Android之SOAP协议与服务器交互,解决连接超时的问题
- 解决[服务器证书无效, 连接伪装服务器]问题
- 扫码登录--浏览器与服务器的长连接
- 解决IE浏览器automation 服务器不能创建对象的问题
- 解决客户端浏览器和服务器交互的编码问题详解
- 解决《windows 能连接cmcc 但是浏览器打不开登入界面》问题
- 客户端与服务器的连接问题
- 真正解决activesync与wince5连接问题
- hdfs远程连接hadoop问题与解决
- RAISE_APPLICATION_ERROR用法
- 使用Redis实现高并发分布式序列号生成服务
- Node.js事件循环
- FileNameBatcher 批处理文件名
- Hibernate知识点合集(转载)
- lwip1.3.2+ucosII服务器与浏览器连接问题bug解决
- error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1700”不匹配值“1800”
- 3D数学基础 图形与游戏开发的学习 (五) [3D坐标系]
- codeforces ice cave
- 22个很棒的jQuery文件上传插件
- 分享一个链接
- 获取当前显示的ViewController
- 用UpdateLayeredWindow实现任意异形窗口
- ios 上传多张图片总结——IOS网络访问之使用AFNetworking