使用muduo库编写网络server端

这篇具有很好参考价值的文章主要介绍了使用muduo库编写网络server端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

muduo库源码编译安装和环境搭建

C++ muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客

#include<iostream>
#include<muduo/net/TcpServer.h>
#include<muduo/net/EventLoop.h>
using namespace std;
using namespace muduo;
using namespace muduo::net;
using namespace placeholders;

/*
TcpServer:用于编写服务端程序
TcpClient:用于编写客户端程序
*/
class ChatServer
{
public:
    ChatServer(
        EventLoop* loop,//事件循环,epoll
        const InetAddress& listenAddr,//网络地址
        const string& nameArg//连接名称
    ):_server(loop,listenAddr,nameArg),_loop(loop)
    {
        //设置注册用户的连接建立和断开回调函数,
        //即当程序连接建立或者断开时应该做什么事
        _server.setConnectionCallback(std::bind(&ChatServer::onConnectionCallback,this,_1));

        //设置注册用户的连接读写回调函数
        _server.setMessageCallback(std::bind(&ChatServer::onMessageCallback,this,_1,_2,_3));

        //设置服务端的线程数量,一个IO线程,3个工作线程
        //muduo库会自行这是IO线程和工作线程的数量
        _server.setThreadNum(4);
    }

    //开启事件循环
    void start()
    {
        _server.start();
    }

private:
    TcpServer _server;
    EventLoop *_loop;

    //检测到连接建立或者断开时要做的事情  epoll、listenfd、accept
    void onConnectionCallback(const TcpConnectionPtr& conn)//这是一个智能指针类型
    {
        if(conn->connected())//连接建立
        {
            cout<<conn->peerAddress().toIpPort()<<"->"
            <<conn->localAddress().toIpPort()<<" state online"<<endl;
        }else{
            cout<<conn->peerAddress().toIpPort()<<"->"
            <<conn->localAddress().toIpPort()<<" state offline"<<endl;
            conn->shutdown();//close(fd)

        }
    }

    //处理用户的数据读写事件
    void onMessageCallback(const TcpConnectionPtr& conn,//连接
                            Buffer* buffer,//缓冲区
                            Timestamp time)//接收到数据的时间信息   
    {
        string buf=buffer->retrieveAllAsString();//将接收到的缓冲数据转换为string类型
        cout<<"recv data:"<<buf<<" time:"<<time.toString()<<endl;
        conn->send(buf);
    }
};

int main()
{
    EventLoop loop;//epoll
    InetAddress addr("127.0.0.1",6000);
    ChatServer server(&loop,addr,"ChatServer");

    server.start();
    loop.loop();//epoll_wait,以阻塞方式等待新用户连接,已连接用户的读写事件等
    return 0;
}

打开一个linux终端写下编译命令

g++ -o server muduo_server.cpp -lmuduo_net -lmuduobase -lpthread

运行server端之后,再打开一个终端,运行telnet命令作为客户端进行测试

使用muduo库编写网络server端,c++,计算机网络,c++,网络文章来源地址https://www.toymoban.com/news/detail-803355.html

到了这里,关于使用muduo库编写网络server端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 哈工大计算机网络实验四——简单网络组建配置 Cisco Packet Tracer 使用指南

    做实验四时,本来希望能够借助实验指导书上的内容速通,但尝试了一个上午后发现遍地都是bug,于是便花了半天的时间认真学习了一下其中的运行机制,晚上又把所有的switch全都重写了一遍,最后终于成功。这篇博客详细介绍了该实验中使用Cisco Packet Tracer组建校园网的过程

    2024年02月09日
    浏览(72)
  • 计算机网络——Wireshark软件使用与协议分析(ARP协议、IP与ICMP分析)

            一、实验目的   学习 Wireshark 的基本操作,抓取和分析有线局域网的数据包;掌握以太网 MAC帧的基本结构,掌握 ARP 协议的特点及工作过程。  二、实验内容 使用 Wireshark 抓取局域网的数据包并进行分析: 1. 学习 Wireshark 基本操作:重点掌握捕获过滤器和显示过滤器

    2024年02月05日
    浏览(44)
  • 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信

    【计算机网络】思科实验(1):交换机的VLAN划分 【计算机网络】思科实验(2):交换机间的VLAN通信 【计算机网络】思科实验(3):使用三层交换机实现跨VLAN间的通信 【计算机网络】思科实验(4):综合实验作业之办公室的跨VLAN通信 【计算机网络】思科实验(5):单臂路由跨VLAN通信

    2024年02月03日
    浏览(54)
  • 【计算机网络八股】计算机网络(一)

    计算机网络体系可以大致分为一下三种,OSI七层模型、TCP/IP四层模型和五层模型。 OSI七层模型:大而全,但是比较复杂、而且是先有了理论模型,没有实际应用。 TCP/IP四层模型:是由实际应用发展总结出来的,从实质上讲,TCP/IP只有最上面三层,最下面一层没有什么具体内

    2024年02月11日
    浏览(44)
  • 计算机网络----计算机网络的基础

    目录 一.计算机网络的相关概念 二.计算机网络的功能 三.计算机网络的发展 四.计算机网络的组成 五.计算机网络的分类 六.计算机的性能指标 1.速率 2.带宽 3.吞吐量 4.时延 5.时延带宽积 6.往返时延RTT 7.利用率 七.计算机的分层结构 八.ISO/OSI参考模型 九.OSI参考模型与TCP/IP参考模

    2024年03月17日
    浏览(45)
  • 计算机网络——计算机网络体系结构

    1.1 概念 一般认为,计算机网络是一个将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享的信息传递的系统,简而言之,计算机网络就是一些 互联的,自治的计算机系统的集合 1.2 组成 (1)从组成部分:由 硬件,软件,

    2024年02月15日
    浏览(48)
  • 第一章 计算机网络概述【计算机网络】

    2023-3-26 17:07:26 以下内容源自《【计算机网络】》 仅供学习交流使用 计算机网络 计算机网络(第8版) 谢希仁 编著 1.2.1 网络的网络 计算机网络〈简称为网络)由若干结点(node) R和连接这些结点的链路(link)组成。 1.2.2互联网基础结构发展的三个阶段 请读者注意以下两个意思相

    2024年02月13日
    浏览(46)
  • 燕山大学计算机网络实验(windows网络配置方法及基本网络命令、交换机和路由器的使用、小型校园网络模拟搭建)

    项目源码以及报告获取,可看我专栏简介 1、查看本机网络配置,根据配置信息,把本机地址改为静态地址,并使用ipconfig、ping命令验证网络状态,如果网络不通请根据相关现象测试,并给出自己的推论和思考。(请使用自己的笔记本连接校园网无线进行操作) 2、在本机网络

    2024年02月01日
    浏览(62)
  • 【计算机网络相关】内网穿透介绍以及使用FRP实现内网穿透Windows远程桌面

    ❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈 1.1 本人对内网穿透的理解 一般来说,如果在公网环境是无法访问到内网的

    2024年02月01日
    浏览(40)
  • 【计算机网络原理】第一章:计算机网络概述

    1、计算机网络的诞生 从技术范畴来看,计算机网络是计算机技术与通信技术相互融合的产物。 2、计算机网络的定义 计算机网络是互连的、自治的计算机的集合 1)自治: 互连的计算机系统彼此独立,不存在主从或者控制与被控制的关系。 2)互连: 利用通信链路连接相互独立

    2024年04月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包