网络模块代码ChatServer
首先,我们在include下的server下创建头文件:chatserver.hpp
#ifndef CHATSERVER_H
#define CHATSERVER_H
#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
using namespace muduo;
using namespace muduo::net;
//聊天服务器的主类
class ChatServer
{
public:
//初始化聊天服务器对象,构造TCPServer
ChatServer(EventLoop *loop,
const InetAddress &listenAddr,
const string &nameArg);
//启动服务
void start();
private:
//上报链接相关信息的回调函数
void onConnection(const TcpConnectionPtr &);
//上报读写事件相关信息的回调函数
void onMessage(const TcpConnectionPtr &,
Buffer *,
Timestamp);
TcpServer _server;//组合的muduo库,实现服务器功能的类对象
EventLoop *_loop;//指向事件循环对象的指针
};
#endif
接下来我们在src下的server下创建文件:chatserver.cpp
#include "chatserver.hpp"
using namespace std;
using namespace placeholders;//参数占位符
//初始化聊天服务器对象
ChatServer::ChatServer(EventLoop *loop,
const InetAddress &listenAddr,
const string &nameArg)
: _server(loop, listenAddr, nameArg), _loop(loop)
{
//注册链接回调
_server.setConnectionCallback(std::bind(&ChatServer::onConnection, this, _1));//绑定器bind
//注册消息回调
_server.setMessageCallback(std::bind(&ChatServer::onMessage, this, _1, _2, _3));//绑定器bind
//设置线程数量4
_server.setThreadNum(4);
}
//启动服务
void ChatServer::start()
{
_server.start();
}
//上报链接相关信息的回调函数
void ChatServer::onConnection(const TcpConnectionPtr &conn)
{
}
//上报读写事件相关信息的回调函数
void ChatServer::onMessage(const TcpConnectionPtr &conn,
Buffer *buffer,
Timestamp time)
{
}
我们在src下的server下创建文件:main.cpp
#include "chatserver.hpp"
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
EventLoop loop;
InetAddress addr("127.0.0.1", 6000);
ChatServer server(&loop, addr, "ChatServer");
server.start();
loop.loop();
return 0;
}
编译成功