包含服务器数据库的聊天系统,FxLib: 游戏服务器架构 并用来实现了一个聊天的服务 h5的包里面包含了websocket的简单客户端实现 chat.sql 是聊天的数据库结构...

本文介绍了FxLib游戏服务器架构,它实现了tcp、udp、websocket链接,具备跨平台功能。涵盖网络传输、数据库、redis等库的封装,给出编译、用法、运行参数及示例。网络部分是核心,win用完成端口模型,linux用epoll模型,tcp常规,websocket多一次握手,udp模拟滑动窗口保证消息完整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FxLib

FxLib 是一款游戏服务器架构 网络底层实现了 tcp udp websocket 的链接方式 并实现了linux跟win跨平台的功能

内容

Net: 封装的网络传输库

Database: 封装的数据库相关

RedisCon: 封装的redis相关的库

meta_header: 一些公用的函数

common: 公用函数的实现

LuaLib: 封装的lua库

gflags: 依赖的gflags(linux)相关

gflags_win: 依赖的gflags(win)相关

json: 依赖的json相关

lua: 依赖的lua相关

tolua: 依赖的tolua相关

redis-3.2.1: 依赖的redis(linux)相关(源码 库需要编译)

redis-win-3.2.100: 依赖的redis(win)相关(源码 库需要编译)

mysql: mysql的头文件及运行时库

RerdisTest: Redis连接的测试

TestServer: server端的示例

TestClient: client端的示例

ChatServerManager: 聊天管理服的简单实现

ChatServer: 聊天服的简单实现

GameServer: 配合聊天服的游戏服的简单实现

Debug/scripts: 一些lua的脚本

chat.sql: 聊天服用到的数据库脚本

h5.zip: 聊天服用到的websocket的客户端

gflags-master.zip: gflags源码

jsoncpp-1.8.3.zip: json源码

FxLib.sln: win下工程文件

Makefile: linux下makefile

编译

windows下 vs2015 打开FxLib.sln 生成

linux下

make debug -j 3

用法

参照 TestServer与TestClient

网络连接有 SLT_CommonTcp,SLT_WebSocket,SLT_Udp 三种 在对应位置修改即可(main.cpp)

mysql数据库连接参考ChatServer(main.cpp)

redis连接参考RedisTest(main.cpp)

pListenSocket = pNet->Listen(CSessionFactory::Instance(), SLT_WebSocket, 0, FLAGS_port);

pListenSocket = pNet->Listen(CSessionFactory::Instance(), SLT_CommonTcp, 0, FLAGS_port);

...

pNet->TcpConnect(g_sSessions[i], dwIP, g_dwPort, true);

pListenSocket = pNet->Listen(CSessionFactory::Instance(), SLT_Udp, 0, FLAGS_port);

...

pNet->UdpConnect(g_sSessions[i], dwIP, g_dwPort, true);

运行参数:

TestServer:

gflags

[--port] 默认端口20000

TestClient:

lua

[--ip] 默认 "127.0.0.1"

[--port] 默认 20000

ChatServer:

gflags

[--chat_server_ip] 默认 "127.0.0.1", "Chat Server Ip"

[--chat_session_port] 默认 20000, "Chat Session Port"

[--chat_web_socket_session] 默认 20001, "Web Socket Session Port"

[--chat_server_session_port] 默认 20002, "Chat Server Session Port"

[--chat_server_manager_ip] 默认 "127.0.0.1", "Chat Server Manager Ip"

[--chat_server_manager_port] 默认 13000, "Chat Server Manager Port"

[--db_id] 默认 0, "DB Id"

[--db_port] 默认 3306, "DB Id"

[--character_set] 默认 "utf8", "Character Set"

[--db_name] 默认 "chat", "DB Name"

[--host_name] 默认 "127.0.0.1", "Host Name"

[--login_name] 默认 "test", "Login Name"

[--login_pwd] 默认 "test", "DB PassWord"

ChatServerManager:

gflags

[--chat_server_port] 默认 13000, "chat server listen port"

[--game_server_port] 默认 13001, "game server listen port"

[--gm_port], 默认 12000 "gm listen port"

运行示例:

./TestServer --port=20000

./TestClient --ip=127.0.0.1 --port=20000

聊天服运行示例:

bat文件

start ChatServerManager.exe

ping -n 5 127.0.0.1

start ChatServer.exe --chat_session_port=30001 --chat_web_socket_session=30002 --chat_server_session_port=30003

::ping -n 1 127.0.0.1

::start ChatServer.exe --chat_session_port=31001 --chat_web_socket_session=31002 --chat_server_session_port=31003

ping -n 1 127.0.0.1

start GameServer.exe

关于网络部分

是整套架构较核心 并且写的较精彩的部分 win下用完成端口模型 linux用的epoll模型

tcp的实现较为中规中矩(mytcpsock.cpp)

websocket 是在tcp的上层多加了一次握手(mytcpsock.cpp)

udp靠模拟滑动窗口实现消息的包序列与完整性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值