1. raknet结构
raknet是用cmake构建的(我这里是centos 64位环境), 从cmake很容易看出raknet的编译过程:
结构非常简单, 就是根据Source下的源文件,编译生成了一个静态/动态链接库。
2. raknet调试:
- 开启raknet调试: cmake -DCMAKE_BUILD_TYPE=debug 后, 即可用 gdb进行调试
3. raknet的底层模型:
目前在linux下调试了一个ServerClientTest2的例子程序, 就当前的理解看, 程序主要的结构如下:
raknet维护了好多个队列:一个发送队列(bufferedCommands), 这个队列主要是存放用户要发送的消息(比如当调用peer->send()时, 数据会先push到该队列); 还有一个发送队列(requestedConnectionQueue), 这个队列主要存放程序底层的一些消息(比如当调用peer->connect时, 内部会产生的一系列connectReuqest消息); 还有一个接收队列bufferedPacketsQueue, 接收到的消息都会暂时存放到这个队列。还有好几个对列, 后续继续完善。
线程1只负责接收对端发送过来的包, 如果没有包, 就阻塞; 如果有包, 就将包push到接收队列(bufferedPacketsQueue)。
主线程里当调用peer->send时,就会将数据放入到发送队列里