A full-featured reliable UDP communication library.
- Optimized for Real-Time Strategy Game.
- Compatible with skywind3000's C version with modifications.
- Cache friendly and Memory optimized design in golang.
- A session manager has been provided, compatible with net.Conn and net.Listener.
- FEC(Forward Error Correction) Support with Reed-Solomon Codes
- Packet level encryption support with AES, TEA.
- Packet delivery via UDP.
- The conversation id
conv uint32
in session manager should be a random number initiated by client. - KCP doesn't define session control messages like SYN/FIN/RST in TCP, a real world example is to use some multiplexing protocol over session, such as yamux, see kcptun for example.
Client: full demo
kcpconn, err := kcp.DialWithOptions("192.168.0.1:10000", nil, 10, 3)
Server: full demo
lis, err := kcp.ListenWithOptions(":10000", nil, 10, 3)
型号名称: MacBook Pro
型号标识符: MacBookPro12,1
处理器名称: Intel Core i5
处理器速度: 2.7 GHz
处理器数目: 1
核总数: 2
L2 缓存(每个核): 256 KB
L3 缓存: 3 MB
内存: 8 GB
$ go test -run Speed
new client 127.0.0.1:61165
total recv: 16777216
time for 16MB rtt with encryption 570.41176ms
&{BytesSent:33554432 BytesReceived:33554432 MaxConn:2 ActiveOpens:1 PassiveOpens:1 CurrEstab:1 InErrs:0 InCsumErrors:0 InSegs:42577 OutSegs:42641 OutBytes:48111336 RetransSegs:92 FastRetransSegs:92 LostSegs:0 RepeatSegs:0 FECRecovered:1 FECErrs:0 FECSegs:8514}
PASS
ok github.com/xtaci/kcp-go 0.600s
- https://github.com/xtaci/libkcp -- Official client library for iOS/Android(C++11)
- https://github.com/skywind3000/kcp -- A Fast and Reliable ARQ Protocol
- https://github.com/klauspost/reedsolomon -- Reed-Solomon Erasure Coding in Go
All donations on this project will be used to support the development of gonet/2.