mirror of
https://github.com/skywind3000/kcp.git
synced 2025-03-25 08:50:09 +08:00
Created KCP Basic Usage (markdown)
parent
a4b3591362
commit
0ff93bea27
41
KCP-Basic-Usage.md
Normal file
41
KCP-Basic-Usage.md
Normal file
@ -0,0 +1,41 @@
|
||||
基本使用
|
||||
=======
|
||||
|
||||
* 创建 KCP对象:
|
||||
|
||||
```cpp
|
||||
// 初始化 kcp对象,conv为一个表示会话编号的整数,和tcp的 conv一样,通信双
|
||||
// 方需保证 conv相同,相互的数据包才能够被认可,user是一个给回调函数的指针
|
||||
ikcpcb *kcp = ikcp_create(conv, user);
|
||||
```
|
||||
|
||||
* 设置回调函数:
|
||||
|
||||
```cpp
|
||||
// KCP的下层协议输出函数,KCP需要发送数据时会调用它
|
||||
// buf/len 表示缓存和长度
|
||||
// user指针为 kcp对象创建时传入的值,用于区别多个 KCP对象
|
||||
int udp_output(const char *buf, int len, ikcpcb *kcp, void *user)
|
||||
{
|
||||
....
|
||||
}
|
||||
// 设置回调函数
|
||||
kcp->output = udp_output;
|
||||
```
|
||||
|
||||
* 循环调用 update:
|
||||
|
||||
```cpp
|
||||
// 以一定频率调用 ikcp_update来更新 kcp状态,并且传入当前时钟(毫秒单位)
|
||||
// 如 10ms调用一次,或用 ikcp_check确定下次调用 update的时间不必每次调用
|
||||
ikcp_update(kcp, millisec);
|
||||
```
|
||||
|
||||
* 输入一个下层数据包:
|
||||
|
||||
```cpp
|
||||
// 收到一个下层数据包(比如UDP包)时需要调用:
|
||||
ikcp_input(kcp, received_udp_packet, received_udp_size);
|
||||
```
|
||||
处理了下层协议的输出/输入后 KCP协议就可以正常工作了,使用 ikcp_send来向远端发
|
||||
送数据。而另一端使用ikcp_recv(kcp, ptr, size)来接收数据。
|
Loading…
Reference in New Issue
Block a user