kcp结构体字段含义

conv 会话ID
mtu 最大传输单元
mss 最大分片大小
state 连接状态(0xFFFFFFFF表示断开连接)
snd_una 第一个未确认的包
snd_nxt 待发送包的序号
rcv_nxt 待接收消息序号
ssthresh 拥塞窗口阈值
rx_rttvar ack接收rtt浮动值
rx_srtt ack接收rtt静态值
rx_rto 由ack接收延迟计算出来的复原时间
rx_minrto 最小复原时间
snd_wnd 发送窗口大小
rcv_wnd 接收窗口大小
rmt_wnd, 远端接收窗口大小
cwnd, 拥塞窗口大小
probe 探查变量,IKCP_ASK_TELL表示告知远端窗口大小。IKCP_ASK_SEND表示请求远端告知窗口大小
interval 内部flush刷新间隔
ts_flush 下次flush刷新时间戳
nodelay 是否启动无延迟模式
updated 是否调用过update函数的标识
ts_probe, 下次探查窗口的时间戳
probe_wait 探查窗口需要等待的时间
dead_link 最大重传次数
incr 可发送的最大数据量

fastresend 触发快速重传的重复ack个数
nocwnd 取消拥塞控制
stream 是否采用流传输模式

snd_queue 发送消息的队列
rcv_queue 接收消息的队列
snd_buf 发送消息的缓存
rcv_buf 接收消息的缓存

acklist 待发送的ack列表

buffer 存储消息字节流的内存
output udp发送消息的回调函数

时间: 2024-10-09 22:50:33

kcp结构体字段含义的相关文章

ANSI C中取得结构体字段偏移量的常用方法

来自http://blog.chinaunix.net/u2/62910/showart_492571.html 假设在ANSI C程序中定义了一个名为MyStruct的结构类型,其中有一个名为MyField的字段,如何取得它在结构体中的偏移? typedef struct MyStruct_tag{  // some fields  ... long MyField; // other fields  ...} MyStruct; 最容易想到的方法应该与如下代码差不多: size_t GetO

task_struct结构体字段介绍--Linux中的PCB

task_struct结构体 字段介绍 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程, task_struct是Linux中的[进程控制块PCB结构]的具体数据结构 这个结构体包含了一个进程所需的所有信息.它定义在linux-2.6.38.8/include/linux/sched.h文件中. 下面对task_struct这个结构体 进行各个字段的详细介绍 1. 调度数据成员(1) volatile long states;表示进程的当前状态:? TASK_RU

现代 C++ 编译时 结构体字段反射

基于 C++ 14 原生语法,不到 100 行代码:让编译器帮你写 JSON 序列化/反序列化代码,告别体力劳动.?? 本文不讨论完整的 C++ 反射技术,只讨论结构体 (struct) 的字段 (field) 反射,及其在序列化/反序列化代码生成上的应用. 正文开始于 [sec|静态反射] 部分,其他部分都是铺垫..可以略读... 背景(TL;DR) 很多人喜欢把程序员称为 码农,程序员也经常嘲讽自己每天都在 搬砖.这时候,大家会想:能否构造出一些 更好的工具,代替我们做那些无意义的 体力劳动

p/invoke碎片,对结构体的处理

结构体的一些相关知识 可直接转换类类型,比如int类型,在托管代码和非托管代码中占据内存大小 和意义都是一个样的. 结构体封送的关键是:在托管代码和非托管代码中定义的一致性.什么是定义的一致性?包括结构体的对齐粒度:结构体成员的顺序和每个结构体成员在托管代码和非托管代码中的占据内存的大小.本来想着是只是类型一样就行了,但是像布尔类型,在托管代码中占据1个字节,但是在非托管代码中是4个字节,也就是非可直接转换类型. 对齐粒度.这个东西感觉和内存布局有关,以前有一个错误的理念:在一个结构体中定义了一

GO基础之结构体

1 .什么是结构体 GO语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 2.什么是实例化? Go结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正分配内存.因此必须在定义结构体并实例化后才能使用结构体实例化就是根据结构体定义的格式创建一份与格式一致的內存区域. 结构体实例之间的内存是完全独立的. package main import "fmt" func main() {

Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚. 一:结构体声明 格式: struct 结构体名 { } 说明: 1: struct 是定义结构体的关键字 例子 /* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一

结构体struts的长度

在需要计算结构体大小的时候,涉及到的一个问题就是其对齐模数 计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus). 也就是说对齐模数就是这个数据类型占用的空间大小. 关于结构体长度的计算,我查了一下,有两种理解的方式: 方式一: 当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1(类型S强于T)的整数,我们就称类型S的对齐要求比

golang笔记(1)-数据库查询结果映射至结构体

通用的映射模式 query:="select id,name from user where id=?" //单个结构体ret:=&Activity{} DbClient().Find(query,activityId).Unique(ret)//结构体数组ret:=[]Activity{} DbClient().Find(query,activityId).List(&ret)   1.定义结构体 type Activity struct{ ID int64 `col

HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) .聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的