# zbluenet
基于c++11 异步多线程跨平台(linux + windows)网络库,适用于网络游戏
##### 1. 跨平台
```
1. 支持windows 平台, 使用vs2017 编译
2. 支持 linux 平台, make 一键编译
```
#### 2. 异步多线程事件驱动
```
1. windows 上使用 select 模式, 最高支持 2048 个socket 事件
2. linux 上使用epoll
3. 一个accept 线程, 多个 reactor 线程, reactor 线程由用户配置, acceptor 线程负责均衡各个 reactor 线程处理的socket 数
4. reactor 线程负责处理 收包,发包, 解包,封包
```
#### 3. 主逻辑单线程,不并发
```
1. 各个reactor 线程把解包的数据发送到主线程, 主线程有个消息队列, 排队处理消息
```
#### 4. c++11语法
```
1. 程序中广泛使用到了lambda 表达式, 仿函数, 智能指针
2. 只使用c++ 标准库, 没有使用任何第三方算法库
```
#### 5. 支持使用 google protobuffer 通讯
#### 6. example
启动
```c++
zbluenet::LogManager::getInstance()->setMaxLoggerCount(2);
pserver_ = new zbluenet::server::GameServer("127.0.0.1", 9091, 2);
std::string log_file_main = "./zbluenet.%Y%m%d.log";
pserver_->initMainLogger(log_file_main, zbluenet::LogLevel::DEBUG, true);
std::string log_file_net = "./net.%Y%m%d.log";
pserver_->initNetLogger(log_file_net, zbluenet::LogLevel::DEBUG, true);
// 服务初始化
if (false == pserver_->init(
std::bind(&ServerApp::onConnect, this, std::placeholders::_1),
std::bind(&ServerApp::onDisconnect, this, std::placeholders::_1),
nullptr, 30000)) {
LOG_DEBUG("server initialized fail");
return;
}
// 注册消息
C2SLoginMessageHandler::bind();
// 开启定时器
pserver_->startTimer(1000, [](int64_t timer_id)-> void {
LOG_DEBUG("timer %lld called", timer_id);
}, 10);
pserver_->startTimer(1001, [](int64_t timer_id)-> void {
LOG_DEBUG("timer %lld called", timer_id);
});
// 启动服务
pserver_->start();
```
注册消息处理器
```c++
void C2SLoginMessageHandler::bind()
{
sServerApp->registerMessageHandler<protocol::C2SLoginReqMessage>(
std::bind(&C2SLoginMessageHandler::onC2SLoginRequest, std::placeholders::_1, std::placeholders::_2));
}
void C2SLoginMessageHandler::onC2SLoginRequest(const zbluenet::net::NetId &net_id, const protocol::C2SLoginReqMessage *request)
{
LOG_DEBUG("zjw called %s", request->dump().c_str());
std::unique_ptr<protocol::S2CLoginRespMessage> message(new protocol::S2CLoginRespMessage());
message->data.set_ret(9999);
sServerApp->sendMessage(net_id, message);
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于c++11 异步多线程跨平台(linux + windows)网络库,适用于网络游戏.zip
共135个文件
h:58个
cc:47个
log:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2024-06-05
10:17:14
上传
评论
收藏 46.44MB ZIP 举报
温馨提示
C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。C++是C语言的继承,进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C plus plus”,“CPP”。 在C基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的编译器最新版本是Borland C++ 4.5,Symantec C++ 6.1,和Microsoft Visual C++ 2012。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。
资源推荐
资源详情
资源评论
收起资源包目录
基于c++11 异步多线程跨平台(linux + windows)网络库,适用于网络游戏.zip (135个子文件)
google.7z 37.6MB
lib.7z 319KB
libprotobuf.a 24.76MB
c2s.pb.cc 36KB
reactor.cc 12KB
tcp_service.cc 10KB
dynamic_buffer.cc 9KB
socket_address.cc 8KB
tcp_socket.cc 8KB
net_thread.cc 6KB
io_service_select.cc 6KB
timer_heap.cc 5KB
logger_mgr.cc 5KB
net_client_thread.cc 4KB
game_server.cc 4KB
log.cc 4KB
epoller.cc 3KB
select_reactor.cc 3KB
c2s.cc 3KB
tcp_client_service.cc 3KB
timestamp.cc 3KB
tcp_client.cc 2KB
epoll_reactor.cc 2KB
logger_async_sink.cc 2KB
logger.cc 2KB
network.cc 2KB
net_protocol.cc 2KB
epoll_acceptor.cc 2KB
logger_file_sink.cc 2KB
server_app.cc 2KB
io_device.cc 2KB
self_pipe.cc 1KB
fd_set.cc 1KB
thread.cc 1KB
acceptor.cc 1KB
game_service.cc 1KB
select_acceptor.cc 1KB
epoll_service.cc 1KB
logger_base.cc 905B
io_service.cc 876B
c2s_login_message_handler.cc 873B
net_id.cc 809B
tcp_connection.cc 640B
semaphore.cc 551B
base_struct.cc 536B
net_command.cc 388B
async_task.cc 353B
logger_stderr_sink.cc 303B
main.cc 108B
mysql_async_task.cc 0B
demo 11.15MB
libprotobufd.dll 9.44MB
zbluenet.vcxproj.filters 13KB
.gitignore 196B
c2s.pb.h 34KB
macro.h 13KB
tcp_service.h 5KB
reactor.h 4KB
game_server.h 3KB
c2s.h 3KB
net_thread.h 3KB
game_service.h 3KB
tcp_socket.h 3KB
tcp_client.h 3KB
concurrent_queue.h 3KB
log.h 3KB
tcp_client_service.h 2KB
dynamic_buffer.h 2KB
message_queue.h 2KB
net_client_thread.h 2KB
server_app.h 2KB
tcp_connection.h 2KB
timestamp.h 2KB
class_util.h 2KB
select_reactor.h 2KB
socket_address.h 1KB
io_device.h 1KB
io_service_select.h 1KB
logger_mgr.h 1KB
logger.h 1KB
logger_base.h 1KB
timer.h 1KB
acceptor.h 1KB
epoll_reactor.h 1KB
net_protocol.h 1KB
io_service.h 921B
epoller.h 873B
select_acceptor.h 855B
logger_async_sink.h 811B
timer_heap.h 789B
platform.h 789B
thread.h 723B
base_heap_value.h 722B
object_pool.h 708B
net_command.h 707B
base_struct.h 653B
epoll_acceptor.h 643B
self_pipe.h 614B
network.h 602B
epoll_service.h 596B
共 135 条
- 1
- 2
资源评论
生瓜蛋子
- 粉丝: 3917
- 资源: 7441
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功