在前面的日志中通过各种方法建立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】。

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

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

pcb结构链表_lwip中tcp_pcb结构体及其组成链表相关推荐

  1. matlab 结构张量,图像处理中的结构张量(structure tensor)

    结构张量(structure tensor) 主要用于区分图像的平坦区域.边缘区域与角点区域. 此处的张量就是一个关于图像的结构矩阵,矩阵结构构成如下: Rx,Ry分别为图像的水平与垂直梯度,而后进行 ...

  2. matlab 膨胀 结构元,图像形态学膨胀 结构元素

    宽度W,高度H 的图像,做膨胀操作,如果膨胀的结构元素structure element,大小为kw,kh,那么就需要做W*H*kw*kh次运算,运算量比较大. 根据图像形态学的理论,膨胀满足结合律, ...

  3. C语言中的结构体,联合,链表和枚举,位域(上)

    结构名只能表示一个结构形式, 编译系统并不对它分配内存空间. 只有当某变量被说明为这种类型的结构时,才对该变量分配存储空间. 一.结构的定义 定义一个结构的一般形式为: struct 结构名 { 成员 ...

  4. 内核中inode结构体

    在介绍inode结构体之前先做一个链接文件的实验: 1.创建一个普通的文件test.txt,并写入内容查看,如下 2.创建test.txt的硬链接文件,并测试如下: 3.创建test.txt的软连接文 ...

  5. 33. 使用fread()/fwrite()往文件中写入结构体,从文件中读出结构体

    1 //读写结构体 2 #include <stdio.h> 3 typedef struct student 4 { 5 int num; 6 char name[30]; 7 char ...

  6. matlab单元数组与结构体的区别,MATLAB中的结构体和单元数组

    MATLAB中的结构体和单元数组 一.结构: x.real=10 x.imag=5 增加字段 x.scale=1 使用struct函数 s=struct('field1',values1,'field ...

  7. linux 中 timeval结构体 - Neddy11 - 博客园

    linux 中 timeval结构体 - Neddy11 - 博客园 linux 中 timeval结构体 网上很多人写到,timeval结构解释错误 ************************ ...

  8. c语言 结构体映射,内存管理之4:页面映射中的结构体

    date: 2014-09-10 19:09 备注:本文中引用的内核代码的版本是2.4.0. 在前面的文章中,我们介绍了linux页式内存管理,讲到了页面目录PGD.中间目录PMD以及页表PT,本文来 ...

  9. c语言 增加 删除 修改的功能 不用链表,不用链表,单是结构体写入文件后,是否可以进行修改删除...

    不用链表,单是结构体写入文件后,是否可以进行修改删除 #include #include #include typedef struct Node { char  num[20]; char name ...

最新文章

  1. 用于3D摄像头的VCSEL技术
  2. Longest k-Good Segment CodeForces - 616D(尺取法)
  3. hadoop环境安装及简单Map-Reduce示例
  4. 前端开发工具包-WijmoJS,部署授权详解
  5. centos7 安装Gitlab
  6. 问题五十六:怎么用ray tracing画参数方程表示的曲面(3)—— b-spline surface
  7. LoggerFactory.getLogger
  8. uniapp实现的购物列表左右联动功能
  9. fiddler的设置与简单使用
  10. 第11期-通过斗鱼直播爬取弹幕
  11. Springboot集成SMS发送短信
  12. 【HDU 5765】Bonds(进制运算妙用)
  13. 谷歌:民主国家搜索引擎的消费监控
  14. Windows系统——ATTCK靶场(一)——MSF方式
  15. Numpy之数据归一化
  16. WT588F02KD-24SS语音芯片(数码管显示驱动ic)在多功能烧水壶的应用设计方案
  17. 每日新闻丨雷军:金山办公分拆上市是既定战略;我国计划2022年前后建成可载3人的空间站...
  18. Android使用bit.ly的api获取url 短连接
  19. matlab的polyfit,polyval,lsqcurvefit拟合函数
  20. 华为交换机根据MAC地址禁止设备上网

热门文章

  1. layui 开启关闭标签_欧盟发布照明产品ErP及能效标签法规新草案
  2. perl python ruby_perl,lua,python,ruby的对比(3) -- lambda,closure,proper tail function call
  3. BatchNorm中forward未被调用原因
  4. 服务器测试网址填写注意事项
  5. [Swift]LeetCode1153. 字符串转化 | String Transforms Into Another String
  6. JavaScript中一个对象数组按照另一个数组排序
  7. 记一次面试腾讯的奇葩经历
  8. Java占位符替换工具类
  9. 开发iOS即时通讯工具参考的一些开源、框架和教程
  10. FlashPaper安装及使用方法