| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // @see muduo/examples/simple/echo
- #include "muduo/base/Logging.h"
- #include "muduo/net/EventLoop.h"
- #include "muduo/net/InetAddress.h"
- #include "muduo/net/TcpServer.h"
- using std::placeholders::_1;
- using std::placeholders::_2;
- using std::placeholders::_3;
- using muduo::Timestamp;
- using muduo::net::EventLoop;
- using muduo::net::InetAddress;
- using muduo::net::TcpServer;
- using muduo::net::TcpConnectionPtr;
- using muduo::net::Buffer;
- class EchoTcpServer {
- public:
- EchoTcpServer(EventLoop* loop, const InetAddress& addr)
- : server_(loop, addr, "EchoTcpServer")
- {
- server_.setConnectionCallback(std::bind(&EchoTcpServer::onConnection, this, _1));
- server_.setMessageCallback(std::bind(&EchoTcpServer::onMessage, this, _1, _2, _3));
- }
- void start() {
- server_.start();
- }
- private:
- void onConnection(const TcpConnectionPtr& conn) {
- }
- void onMessage(const TcpConnectionPtr& conn,
- Buffer* buf, Timestamp time) {
- muduo::string msg(buf->retrieveAllAsString());
- conn->send(msg);
- }
- TcpServer server_;
- };
- int main(int argc, char** argv) {
- if (argc < 2) {
- printf("Usage: cmd port\n");
- return -10;
- }
- int port = atoi(argv[1]);
- muduo::g_logLevel = muduo::Logger::ERROR;
- muduo::net::EventLoop loop;
- muduo::net::InetAddress addr(port);
- EchoTcpServer server(&loop, addr);
- server.start();
- loop.loop();
- return 0;
- }
|