搜档网
当前位置:搜档网 › LWIP中tcp_write函数的理解

LWIP中tcp_write函数的理解

龙源期刊网 https://www.sodocs.net/doc/90686500.html,

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就是发送代码的函数,问题也得以解决。

相关主题