使用muduo库编写回射服务器echo

muduo是一个基于事件驱动的非阻塞网络库,采用C++和Boost库编写。

(一)使用muduo编写echo回射服务器

在github上下载muduo源码,使用里面的build.sh完成编译,查看这个脚本,可以设置debug版本还是release版本,并指定生成路径:默认是release,生成的库和头文件在${HOME}/build/release-install目录下,因为muduo是静态链接的C++程序库,因此使用的时候需要指定头文件目录,和库文件目录,并链接相应的静态库文件(-lmuduo_net -lmuduo_base)。

echo回射服务器函数我们很熟悉,大体步骤是:

1.创建套接字 socket
2.绑定端口 bind
3.监听套接字 listen
4.阻塞等待客户端连接 accept
5.连接建立accept返回,阻塞等待客户端消息 recv
6.回射消息到客户端 write

基于事件的非阻塞网络编程,是编写高性能并发网络服务器的主流模式,使用这种方式首先要转变一下上述步骤中的思路:把原来的“主动调用recv来接收数据,主动调用accept来接收连接,主动调用send来发送数据”,换成“注册一个收数据的回调,网络库收到数据会调用我,直接把数据提供给我,供我消费;注册一个接收连接的回调,网络库接受了新连接会回调我,供我使用;需要发送数据的时候,只管往连接中写,网络库会负责无阻塞地发送。”

关于怎么去使用epoll轮询,怎么使用线程池分发任务等细节,待后续阅读源码后再仔细学习。首先学会使用muduo库编写一个回射服务器echo程序。

1.1 直接编写回调函数

//  echo1/echo.cpp

#include <muduo/base/Logging.h>
#include <muduo/base/Timestamp.h>
#include <muduo/net/TcpServer.h>
#include <muduo/net/EventLoop.h>
#include <muduo/net/TcpConnection.h>

using namespace muduo;
using namespace muduo::net;

//accept的回调函数
void onConnection(const TcpConnectionPtr &conn)
{
    LOG_INFO << "EchoServer - " << conn->peerA
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值