1#include "TcpServer.h" 2#include "EventLoop.h" 3#include "InetAddress.h" 4#include <stdio.h> 5 6void onConnection(const muduo::TcpConnectionPtr& conn) 7{ 8 if (conn->connected()) 9 { 10 printf("onConnection(): tid=%d new connection [%s] from %s\n", 11 muduo::CurrentThread::tid(), 12 conn->name().c_str(), 13 conn->peerAddress().toHostPort().c_str()); 14 } 15 else 16 { 17 printf("onConnection(): tid=%d connection [%s] is down\n", 18 muduo::CurrentThread::tid(), 19 conn->name().c_str()); 20 } 21} 22 23void onMessage(const muduo::TcpConnectionPtr& conn, 24 muduo::Buffer* buf, 25 muduo::Timestamp receiveTime) 26{ 27 printf("onMessage(): tid=%d received %zd bytes from connection [%s] at %s\n", 28 muduo::CurrentThread::tid(), 29 buf->readableBytes(), 30 conn->name().c_str(), 31 receiveTime.toFormattedString().c_str()); 32 33 printf("onMessage(): [%s]\n", buf->retrieveAsString().c_str()); 34} 35 36int main(int argc, char* argv[]) 37{ 38 printf("main(): pid = %d\n", getpid()); 39 40 muduo::InetAddress listenAddr(9981); 41 muduo::EventLoop loop; 42 43 muduo::TcpServer server(&loop, listenAddr); 44 server.setConnectionCallback(onConnection); 45 server.setMessageCallback(onMessage); 46 if (argc > 1) { 47 server.setThreadNum(atoi(argv[1])); 48 } 49 server.start(); 50 51 loop.loop(); 52} 53