龙源期刊网 http://www.qikan.com.cn
LWIP中tcp_write函数的理解
作者:刘光然
来源:《新课程·中旬》2013年第06期
摘 要::LWIP是一款应用与嵌入式领域的开源TCP/IP协议栈。在学习代码实现中,学生遇到的第一个大问题就是tcp_write函数,解释了tcp_write函数背后的工作机理。 关键词:LWIP;tcp_write函数;工作机理 在一个简单的TCP服务器实现代码中,
1.pcb=tcp_new();/*建立TCP控制块(pcb) */
2.tcp_bind(pcb,IP_ADDR_ANY,80);/*绑定IP和端口号*/ 3.pcb=tcp_listen(pcb);/*进入监听状态*/ 4.tcp_accept(pcb,http_accept);/*设置回调函数*/ 在tcp_accept中调用了tcp_recv函数。
5.tcp_recv(pcb,http_recv);/*设置回调函数*/ 在http_recv中调用了tcp_write函数。
6.tcp_write[pcb,http_html_hdr,sizeof(http_html_hdr),0]; /*发送http协议头部信息*/
7.tcp_write[pcb,login,sizeof(login),0]; /*发送登录网页信息*/
在tcp_write中只是调用了tcp_enqueue函数,构造一个报文
段并放在控制块缓冲队列中,并没有立即发送,而是等待数据集中一下然后再发送。那发送是在哪句代码中体现呢?在网络上和书本上,都无法找到明确的解释。
在main函数中调用了LwIP_Periodic_Handle函数,在这个函数中调用了tcp_tmr函数,内部又调用了tcp_slowtmr函数,在这个函数中调用了tcp_output函数。而tcp_output就是发送代码的函数,问题也得以解决。
相关推荐: