网络编程
文章平均质量分 69
FuzhouJiang
专注后端、C/C++开发的菜鸟,相信日拱一卒、功不唐捐。欢迎各位对博文批评指正,互相学习
展开
-
json和CMake简单入门
Json是一种轻量级的数据交换格式(也叫数据序列化方式)。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。客户端需要将数据序列化为字节流/字符流发送到服务端,服务端需要进行反序列化为原来的消息格式。常用的数据传输序列化格式有XMLJsonProtoBuf,在公司级别的项目中,大量的在使用ProtoBuf。原创 2023-04-17 19:37:49 · 976 阅读 · 0 评论 -
Muduo库源码剖析(十)——总结
C++11、 Socket、 Reactor模型、多线程、epoll我自己对Muduo库网络部分核心做了一个总结Muduo库采用网络模型,在mainLoop中 关注listenfd的读事件,并且将该listenfd封装成一个特殊的类即Acceptor,因为其读事件的处理是调用accept建立连接,并且将连接发送到一个subLoop上,选择subLoop的方法采用轮询的方法。EventLoop模块首先是最重要的Reactor模块,在Muduo库中也就是EventLoop类的,其中主要的功能负。原创 2023-04-07 21:43:22 · 612 阅读 · 0 评论 -
Muduo库源码剖析(九)——TcpConnection类
它只处理读事件,即监听新连接的到来,它运行在。是对一条建立起来的连接fd进行封装,而。”,它是不可再生的,一旦连接断开,这个。返回0,触发关闭逻辑。代码量比较大,但是逻辑比较简单。处理事件的一系列回调就是在。即对方先关闭连接,本地。是对于任意fd 的封装。可以认为是一个特殊的。原创 2023-04-07 21:24:28 · 705 阅读 · 0 评论 -
Muduo库源码剖析(八)——TcpServer类
的,TcpServer会用到Acceptor,但Acceptor并不知道TcpServer的存在。TcpServer会创建TcpConnection,但TcpConnection并不知道TcpServer的存在.效率更高(即生产者往队列放任务(IO逻辑处理),唤醒生产者)muduo利用每个subloop上设置一个。原创 2023-04-07 21:22:36 · 661 阅读 · 0 评论 -
Muduo库源码剖析(七)——缓冲区Buffer类
不一定全发完,没发完的数据要用一个容器进行接收,所以必须要实现应用层缓冲区.注意读写缓冲区 都有readerIndex 和 writerIndex!而不是读缓冲区没有writerIndex,写缓冲区没有readerIndex。是为了在序列化的时候可以便宜的在首部增加几个字节而不必腾挪。由于Muduo库使用的是。利用其动态扩容的机制。原创 2023-04-07 21:11:40 · 271 阅读 · 0 评论 -
Muduo库源码剖析(六)——Socket类和Acceptor类
该类主要作用就是封装socketfd,从muduo源代码简化提取后的代码如下。中进行事件监视,这个工作在。,主要工作是 负责管理。这个类对象在muduo的。调整当前进程的fd上限。进行集群或分布式部署了。原创 2023-04-07 20:57:32 · 151 阅读 · 0 评论 -
Muduo库源码剖析(五)——Thread相关类
线程池若不自定义线程数,则所有工作都在唯一的。的一对一绑定,是muduo库的一大亮点。该类主要功能是线程池,每一条。该类的主要功能是实现。原创 2023-04-07 20:51:38 · 151 阅读 · 0 评论 -
Muduo库源码剖析(四)——EventLoop类
顾名思义每个线程只能有一个EventLoop对象,因此EventLoop的构造函数会检查当前线程是否已经创建了其他EventLoop对象,遇到错误就终止程序(LOG_FATAL)。:与其他进程间通信机制相比,如管道、消息队列等,eventfd() 的开销更小,因为它不需要。:eventfd() 可以用于在不同线程之间传递信号,使得它在多线程应用程序中非常有用。EventLoop对象的生命期通常和其所属的线程一样长,它不必是。它在主线程创建了EventLoop对象,却试图在另一个线程调用其。原创 2023-04-07 20:46:01 · 329 阅读 · 0 评论 -
Muduo库源码剖析(三)——获取线程tid方法
是使C++能够调用C写作的库文件的一个手段,如果要对编译器提示使用C的方式来处理函数的话,那么就要使用extern "C"来说明。关键字可以在当前文件中声明一个在其他文件中定义的全局变量。这样,在当前文件中就可以使用这个变量,而不需要重新定义一遍。关键字可以在当前文件中声明一个在其他文件中定义的函数。这样,在当前文件中就可以调用这个函数,而不需要重新定义一遍。机制) ,即会为修饰的变量在当前线程存储一份copy,别的线程是看不到这个变量的修改。是一个关键字,用于在当前文件以外的地方声明一个变量或函数。原创 2023-04-07 20:36:20 · 595 阅读 · 0 评论 -
Muduo库源码剖析(二)——Poller和EPollPoller
这个成员函数实现并不在 Poller.cc中,因为考虑到,这个函数功能是获取一个具体的Poller,如果在Poller.cc中实现就需要include EpollPoller或PollPoller, 这样在抽象基类里包含实现类头文件不好!执行其他程序的时候,全新的程序会替换子进程中的地址空间,数据段,堆栈,此时保存与父进程文件描述符也就不存在了,也无法进行关闭,这时候就需要。EventLoop中的ChannelList始终是 大于等于 Poller中的ChannelMap的。基类不应该依赖派生类。原创 2023-04-07 20:33:13 · 560 阅读 · 0 评论 -
Muduo库源码剖析(一)——Channel
事件分发器中最重要的两个类型channel和PollerChannel可理解为通道,poller往通道传输数据(事件发生情况EventLoop包含多个channel和一个 Poller;Channel相当于是对socket的事件处理封装,包含了socket的详细信息,scoket以及感兴趣的事件都在channel里;channel是muduo库负责注册读写事件的类,并保存了fd读写事件发生时调用的回调函数,如果poll/epoll有读写事件发生则将这些事件添加到对应的通道中。一个channel。原创 2023-04-07 20:31:24 · 579 阅读 · 0 评论 -
Linux上的五种IO模型
注:size == -1 && errno == EAGAIN 表示没有数据接收到,但是正常。可同时监视多个socket的数据就绪状态,但数据读写阶段仍需应用进程阻塞读取数据。数据就绪阶段分为阻塞和非阻塞。数据就绪阶段后的数据读写由系统代为将数据从内核空间拷贝到用户空间。在处理 IO 的时候,阻塞和非阻塞都是同步 IO。检查,减少了系统API的调用次数,提高了效率。注意到数据读写阶段仍需应用进程阻塞读取数据。内核在第一个阶段是异步,在第二个阶段是同步;典型的一次IO的两个阶段是。调用异步IO函数,由。原创 2023-03-28 12:52:32 · 301 阅读 · 0 评论 -
muduo库使用方法(一)
使用muduo库实现一个简单的回声服务器原创 2023-03-26 11:00:49 · 632 阅读 · 0 评论 -
安恒信息C安全开发实习面试
安恒信息C实习面试原创 2023-03-20 21:54:27 · 582 阅读 · 0 评论 -
Reactor原理与实现
Reactor原理与实现,附C语言代码原创 2023-03-12 21:40:43 · 266 阅读 · 0 评论 -
主机可以ping通虚拟机但无法访问虚拟机某一端口
主机可ping通虚拟机但是无法访问某一指定端口原创 2023-03-08 21:21:40 · 4846 阅读 · 1 评论 -
用进程池实现的简单CGI服务器
用进程池实现的简单CGI服务器原创 2023-02-24 21:06:52 · 279 阅读 · 0 评论 -
多进程共享内存聊天室服务器
多进程共享内存聊天室服务器,一个客户连接一个进程来处理请求原创 2023-02-22 19:49:09 · 286 阅读 · 0 评论 -
时间轮和时间堆管理定时器
时间轮和时间堆管理定时器原创 2023-02-17 21:58:24 · 848 阅读 · 0 评论 -
利用升序定时器链表处理非活动连接
利用升序定时器链表处理非活动连接原创 2023-02-11 22:13:21 · 642 阅读 · 0 评论 -
epoll的ET和LT模式
epoll的ET(边缘触发)和LT(水平触发)模式原创 2023-01-20 13:50:08 · 1879 阅读 · 0 评论 -
有限状态机实现解析HTTP报文
有限状态机实现解析HTTP报文原创 2023-01-19 13:41:28 · 627 阅读 · 0 评论 -
mysql连接池初识
数据库连接池初识原创 2022-11-01 10:51:09 · 334 阅读 · 0 评论 -
io_uring学习笔记
io_uring学习笔记原创 2022-10-30 16:45:40 · 1244 阅读 · 0 评论 -
定时器方案学习笔记
定时器方案红黑树,时间轮,最小堆原创 2022-10-26 16:48:07 · 340 阅读 · 0 评论 -
epoll实现相关学习笔记
epoll实现相关知识原创 2022-10-25 20:34:28 · 321 阅读 · 0 评论 -
用户态协议栈学习笔记
用户态协议栈学习笔记原创 2022-10-25 20:28:21 · 342 阅读 · 0 评论 -
异步请求池以及协程基本了解之笔记
协程初始原创 2022-10-23 20:34:58 · 489 阅读 · 0 评论 -
http服务器学习笔记
http服务器再学习笔记原创 2022-10-12 11:43:46 · 255 阅读 · 0 评论 -
websocket协议与服务器实现笔记
websocket协议与服务器实现原创 2022-10-12 11:39:22 · 951 阅读 · 0 评论 -
TCP百万并发服务器优化调参
百万并发服务参数调优原创 2022-07-31 15:58:53 · 1667 阅读 · 0 评论 -
C语言简易TCP服务端程序
C语言TCP服务端程序原创 2022-07-17 15:44:18 · 1592 阅读 · 0 评论 -
C语言简易版webserver
根据黑马Linux网络编程的webserver项目自己对其做出的总结。原创 2022-06-08 16:51:33 · 737 阅读 · 0 评论