Update README.md

update doc
This commit is contained in:
Linwei 2014-12-30 17:59:54 +08:00
parent 91bc738f9a
commit cfb0f3a747

View File

@ -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关闭可以设置22次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);