1
0
mirror of https://github.com/skywind3000/kcp.git synced 2025-04-28 16:10:14 +08:00

Updated KCP Best Practice (markdown)

Linwei 2018-05-23 18:20:37 +08:00
parent 9540052369
commit bdf602c1c2

@ -36,4 +36,18 @@ P3 = (3, 2, 1)
#### 协议栈分层组装
不要试图将任何加密或者 FEC相关代码实现到 KCP里面请实现成不同协议单元并组装成你的协议栈具体请看[协议栈分层组装](https://github.com/skywind3000/kcp/wiki/Network-Layer)
不要试图将任何加密或者 FEC相关代码实现到 KCP里面请实现成不同协议单元并组装成你的协议栈具体请看[协议栈分层组装](https://github.com/skywind3000/kcp/wiki/Network-Layer)
#### 同时支持发送可靠和非可靠数据
有的产品可能除了需要可靠数据,还需要发送非可靠数据,那么 KCP 如何支持这种需求呢?很简单,你自己实现:
```c
connection.send(channel, pkt, size);
```
channel == 0 使用 kcp 发送可靠包channel == 1 使用 udp 发送非可靠包。
因为传输是你自己实现的你可以在发送UDP包的头部加一个字节来代表这个channel收到远程来的 UDP以后也可以判断 channel==0 的话,把剩下的数据给 ikcp_input否则剩下的数据为远程非可靠包。
这样你得到了一个新的发送函数用channel来区别你想发送可靠数据还是非可靠数据。游戏里每秒钟继续30个包的非可靠然后参杂一些可靠包拆分下你的消息。