Raknet是一套开源的网络通讯库,它很方便的建立基于UDP和TCP的通讯应用项目,特别是游戏项目的网络通讯应用场景。
1. 建立 Server/Client 两个终端工程
- 使用Code::Blocks新建两个Empty Project(空项目),您可以参考《Centos6.2如何安装Code::Blocks》
- 选中项目右键Build Options(编译选项)
- 选中Linker settings的标签,点击Add 添加两个库支持文件。
- /usr/local/lib/libraknet.so 是上篇文章《Centos6.2下的精装伴侣:Raknet & Code::Blocks 安装方法实操指引》编译生成的Raknet库文件,It's important so.
- /usr/lib64/libpthread.so 看文件名可以猜到,这是linux pthread函数库,也即是多线程的支持库。
- 选中Search directories,点击Add可添加Raknet结构定义头文件
- /usr/local/include/raknet/ 是Raknet的结构定义头文件,相当include的寻找路径
一切就绪,下面就是编写代码的时候了!
2. Server端代码
#include "MessageIdentifiers.h"
#include "RakPeerInterface.h"
#include "RakNetTypes.h"
#include "RakSleep.h"
#include "Kbhit.h"
#include "Gets.h"
#include "GetPacketIdentifier.h"
// 监听端口
#define SERVER_PORT 60005
int main(void)
{
RakNet::RakPeerInterface *server=RakNet::RakPeerInterface::GetInstance();
server->SetIncomingPassword("user_defined_string", (int)strlen("user_defined_string"));
server->SetTimeoutTime(30000,RakNet::UNASSIGNED_SYSTEM_ADDRESS);
RakNet::Packet* p; // 保存接收的数据在
unsigned char packetIdentifier; // 包类型
RakNet::SystemAddress clientID=RakNet::UNASSIGNED_SYSTEM_ADDRESS;
char message[2048];
// IPV4/IPV6
RakNet::SocketDescriptor socketDescriptors[2];
socketDescriptors[0].port=SERVER_PORT;
socketDescriptors[0].socketFamily=AF_INET; // Test out IPV4
socketDescriptors[1].port=SERVER_PORT;
socketDescriptors[1].socketFamily=AF_INET6; // Test ou