Update README.md
update doc
This commit is contained in:
parent
91bc738f9a
commit
cfb0f3a747
21
README.md
21
README.md
@ -58,7 +58,7 @@ TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的
|
||||
|
||||
# 基本使用
|
||||
|
||||
* 创建 KCP对象:
|
||||
1. 创建 KCP对象:
|
||||
|
||||
```cpp
|
||||
// 初始化 kcp对象,conv为一个表示会话编号的整数,和tcp的 conv一样,通信双
|
||||
@ -66,8 +66,7 @@ TCP是为流量设计的(每秒内可以传输多少KB的数据),讲究的
|
||||
ikcpcb *kcp = ikcp_create(conv, user);
|
||||
```
|
||||
|
||||
* 设置回调函数:
|
||||
|
||||
2. 设置回调函数:
|
||||
|
||||
```cpp
|
||||
// KCP的下层协议输出函数,KCP需要发送数据时会调用它
|
||||
@ -81,7 +80,7 @@ int udp_output(const char *buf, int len, ikcpcb *kcp, void *user)
|
||||
kcp->output = udp_output;
|
||||
```
|
||||
|
||||
* 循环调用 update:
|
||||
3. 循环调用 update:
|
||||
|
||||
```cpp
|
||||
// 以一定频率调用 ikcp_update来更新 kcp状态,并且传入当前时钟(毫秒单位)
|
||||
@ -89,14 +88,13 @@ kcp->output = udp_output;
|
||||
ikcp_update(kcp, millisec);
|
||||
```
|
||||
|
||||
* 输入一个下层数据包:
|
||||
4. 输入一个下层数据包:
|
||||
|
||||
```cpp
|
||||
// 收到一个下层数据包(比如UDP包)时需要调用:
|
||||
ikcp_input(kcp, received_udp_packet, received_udp_size);
|
||||
```
|
||||
处理了下层协议的输出/输入后 KCP协议就可以正常工作了,使用 ikcp_send来向远端发
|
||||
送数据。而另一端使用ikcp_recv(kcp, ptr, size)来接收数据。
|
||||
处理了下层协议的输出/输入后 KCP协议就可以正常工作了,使用 ikcp_send 来向远端发送数据。而另一端使用 ikcp_recv(kcp, ptr, size)来接收数据。
|
||||
|
||||
|
||||
# 协议配置
|
||||
@ -108,21 +106,15 @@ ikcp_input(kcp, received_udp_packet, received_udp_size);
|
||||
int ikcp_nodelay(ikcpcb *kcp, int nodelay, int interval, int resend, int nc)
|
||||
|
||||
nodelay :是否启用 nodelay模式,0不启用;1启用。
|
||||
|
||||
interval :协议内部工作的 interval,单位毫秒,比如 10ms或者 20ms
|
||||
|
||||
resend :快速重传模式,默认0关闭,可以设置2(2次ACK跨越将会直接重传)
|
||||
|
||||
nc :是否关闭流控,默认是0代表不关闭,1代表关闭。
|
||||
|
||||
普通模式:`ikcp_nodelay(kcp, 0, 40, 0, 0);
|
||||
|
||||
极速模式: ikcp_nodelay(kcp, 1, 10, 2, 1);
|
||||
|
||||
2. 最大窗口:
|
||||
|
||||
int ikcp_wndsize(ikcpcb *kcp, int sndwnd, int rcvwnd);
|
||||
|
||||
该调用将会设置协议的最大发送窗口和最大接收窗口大小,默认为32.
|
||||
|
||||
3. 最大传输单元:
|
||||
@ -142,8 +134,7 @@ ikcp_input(kcp, received_udp_packet, received_udp_size);
|
||||
# 最佳实践
|
||||
#### 内存分配器
|
||||
|
||||
默认KCP协议使用 malloc/free进行内存分配释放,如果应用层接管了内存分配,可以用
|
||||
ikcp_allocator来设置新的内存分配器,注意要在一开始设置:
|
||||
默认KCP协议使用 malloc/free进行内存分配释放,如果应用层接管了内存分配,可以用ikcp_allocator来设置新的内存分配器,注意要在一开始设置:
|
||||
|
||||
```cpp
|
||||
ikcp_allocator(my_new_malloc, my_new_free);
|
||||
|
Loading…
x
Reference in New Issue
Block a user