本文主要是介绍moduo windows下简单使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本人在windows下学习该库,使用的是GitHub - kevin-gjm/muduo-win: muduo in windows
linux下可以使用https://github.com/chenshuo/muduo.git
编译:
设置main的入口:
运行即打开了 tcp_server。
测试连接
进入命令模式:快捷键 :ctrl + ]
测试代码:
#include "TcpServer.h"
#include "logging.h"
#include <functional>
#include <iostream>
using namespace calm;
using namespace calm::net;class EchoServer
{
public:EchoServer(EventLoop* loop,InetAddress& listenAddr):loop_(loop),server_(loop,listenAddr,"EchoServer"){//给服务器注册用户建立断开连接的回调server_.setConnectionCallback(std::bind(&EchoServer::onConnection,this,std::placeholders::_1));//给服务器注册用户可读写事件回调server_.setMessageCallback(std::bind(&EchoServer::onMessage,this,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3));server_.setThreadNum(3);}void start(){server_.start();}
private:void onConnection(const TcpConnectionPtr& conn){LOG_INFO << conn->peerAddress().toIpPort() << " -> "<< conn->localAddress().toIpPort() << " is "<< (conn->connected() ? "UP" : "DOWN");conn->send("hello calm\n");}void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp time){string msg(buf->retrieveAllAsString());//LOG_INFO << conn->name() << " recv " << msg.size() << " bytes at " << time.toString();std::cout << "receive: " << msg << "\n";if (msg == "exit\n"){conn->send("bye\n");conn->shutdown();//关闭写端 }if (msg == "quit\n"){loop_->quit();}conn->send(msg);}EventLoop* loop_;TcpServer server_;
};//end EchoServerint main()
{LOG_INFO << "ThreadId = " << getCurrentThreadId();EventLoop loop;InetAddress listenAddr("127.0.0.1", 8080);EchoServer server(&loop, listenAddr);server.start();loop.loop();return 0;
}
这篇关于moduo windows下简单使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!