#include "muduo/net/TcpServer.h" #include "muduo/base/Atomic.h" #include "muduo/base/Logging.h" #include "muduo/base/Thread.h" #include "muduo/net/EventLoop.h" #include "muduo/net/InetAddress.h" #include #include #include using namespace muduo; using namespace muduo::net; void onConnection(const TcpConnectionPtr& conn) { if (conn->connected()) { conn->setTcpNoDelay(true); } } void onMessage(const TcpConnectionPtr& conn, Buffer* buf, Timestamp) { conn->send(buf); } int main(int argc, char* argv[]) { if (argc < 4) { fprintf(stderr, "Usage: server
\n"); } else { LOG_INFO << "pid = " << getpid() << ", tid = " << CurrentThread::tid(); Logger::setLogLevel(Logger::WARN); const char* ip = argv[1]; uint16_t port = static_cast(atoi(argv[2])); InetAddress listenAddr(ip, port); int threadCount = atoi(argv[3]); EventLoop loop; TcpServer server(&loop, listenAddr, "PingPong"); server.setConnectionCallback(onConnection); server.setMessageCallback(onMessage); if (threadCount > 1) { server.setThreadNum(threadCount); } server.start(); loop.loop(); } }