终章TcpServer
回顾muduo网络库的简单使用:
#include <mymuduo/TcpServer.h>
#include <mymuduo/Logger.h>
#include <functional>
#include <string>
class EchoServer
{
public:
EchoServer(EventLoop* loop, const InetAddress &addr,const std::string &name)
:loop_(loop)
,server_(loop,addr,name)
{
//注册回调函数
server_.setMessageCallback(
std::bind(&EchoServer::onMessage, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)
);
server_.setConnectionCallback(
std::bind(&EchoServer::onConnection, this, std::placeholders::_1)
);
//设置线程数量
server_.setThreadNum(3);
}
void start()
{
server_.start();
}
private:
void onConnection(const TcpConnectionPtr& conn)
{
if(conn->connected())
{
LOG_INFO("Connect UP : %s", conn->peerAddress().toIpPort().c_str());
}
else
{
LOG_INFO("Connect DOWN : %s", conn->peerAddress().toIpPort().c_str());
}
}
void onMessage(const TcpConnectionPtr& conn,
Buffer* buf,
Timestamp time)
{
std::string msg = buf->retrieveAllAsString();
conn->send(msg);
conn->shutdown();
}
EventLoop* loop_

本文介绍了Muduo网络库中的TcpServer的使用,包括构造函数、设置回调函数、线程数配置以及启动服务。在构造TcpServer时,它接收一个EventLoop和Socket地址,创建Acceptor并绑定新连接回调,该回调在接收到新连接时创建TcpConnection,并分配到线程池进行处理。此外,还展示了TcpServer的内部结构和回调流程,详细阐述了新连接和消息处理的逻辑。
最低0.47元/天 解锁文章
680

被折叠的 条评论
为什么被折叠?



