lwip中tcp_pcb结构体及其组成链表

2016-08-04 22:12 阅读 485 次 评论 0 条

在前面的日志中通过各种方法建立lwip的echo sever,都是将pc发送的数据,接收后重新发送回pc,并没有实现发送自定义数据到host pc。

通过跟踪echo server中接收数据后,再转发的过程,需要使用tcp_pcb,并且状态为ESTABLISHED,才能将数据发送到PC。

在lwip中,共有4个tcp_pcb的链表,分别是

tcp_active_pcbs【处于接收发送数据状态的pcbs】;

tcp_tw_pcbs【处于时间等待状态的pcbs】;

tcp_listen_pcbs【处于监听状态的pcbs】;

还有一个tcp_bound_pcbs【处于已经绑定但还没有连接或者监听pcbs】。

image

在tcp_blind()之后,tcp_pcb直接加入到了tcp_bound_pcbs链表中了,而我们在上图中位置记录这个链表首地址,即为链表中收个pcb节点的地址,在后续访问时,也就是这个pcb的地址进行发送数据。

image

在将待发送的数据准备好之后,通过tcp_write()函数发送,然而这个函数并不能保证一定会发送,而是要等待数据帧到一定长度才发送,如果需要即时发送,需要通过tcp_ouput(),使其立即发送。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:lwip中tcp_pcb结构体及其组成链表 | 起点博客
分类:应用笔记 标签:

发表评论


表情