上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 48 下一页
摘要: 当我们要输出一个容器的内容时,可以使用std::copy函数,如下: 我们可以这么做的原因就是ostream_iterator,它的实现可能如下: 阅读全文
posted @ 2017-03-09 14:16 冷冰若水 阅读(323) 评论(0) 推荐(0) 编辑
摘要: muduo整体由许多类组成: 这些类之间有一些依赖关系,如下: 阅读全文
posted @ 2017-02-06 16:46 冷冰若水 阅读(414) 评论(0) 推荐(0) 编辑
摘要: event_add、event_del两个函数分别是使event生效和失效的,下面就来看一下两个函数的实现。 event_add 这里以epoll作为后端来举例分析event_add函数的调用流程: event_del 这里以epoll作为后端来分析event_del的调用流程: 结论: 到这里ev 阅读全文
posted @ 2017-01-21 01:34 冷冰若水 阅读(6231) 评论(0) 推荐(0) 编辑
摘要: 这篇文章源于我看libevent的源码时想到的问题,对于libevent的buffer机制,如果接受端一直不取数据的话,会怎样?如果丢包,不现实,因为会导致数据丢失,如果不丢包,就会导致占用内存一直扩大。 由此我想到对于tcp/udp如果一直发,接收端不调用recv取数据会怎样,是会导致send失败 阅读全文
posted @ 2017-01-17 14:05 冷冰若水 阅读(4208) 评论(1) 推荐(0) 编辑
摘要: recv是可以用在UDP套接字上的,前提是该套接字调用过bind或者connect,那它用在TCP和UDP套接字上时有什么区别呢? 下面做一个测试,分别使用UDP、TCP实现一对C/S、客户端发送12字节数据,服务器接受的时候用10字节大小的buffer去接受。 TCP tcpSvr: tcpCli 阅读全文
posted @ 2017-01-13 19:02 冷冰若水 阅读(2888) 评论(0) 推荐(0) 编辑
摘要: 先看一下这三个函数的声明: 1、这个三个函数都是用来从一个socket接收消息的,不同之处在于recvfrom和recvmsg可以用在已经建立连接的socket,也可以用在没有建立连接的socket,关于建立连接的socket,简单来说就是有没有调用connect,调用了bind的socket也可以 阅读全文
posted @ 2017-01-12 14:04 冷冰若水 阅读(9803) 评论(0) 推荐(0) 编辑
摘要: evmap_io_active_函数用于将激活指定文件描述符上的事件 遍历evmap_io的成员events,在每一次遍历中实际调用ev_active_nolock_ 该函数在最后又调用函数event_callback_activate_nolock 该函数最后又调用event_queue_inse 阅读全文
posted @ 2017-01-12 07:55 冷冰若水 阅读(1682) 评论(0) 推荐(0) 编辑
摘要: epoll后端机制的实现代码在epoll.c文件中。 1 /* 2 * Copyright 2000-2007 Niels Provos <provos@citi.umich.edu> 3 * Copyright 2007-2012 Niels Provos, Nick Mathewson 4 * 阅读全文
posted @ 2017-01-12 07:32 冷冰若水 阅读(1531) 评论(0) 推荐(0) 编辑
摘要: 在分析libevent源码并实现自己的网络库的时候想到这样一个问题:为什么注册事件的时候总是替换着注册EPOLLIN和EPOLLOUT呢? 于是我就在接收新连接注册新连接的监听事件时把EPOLLIN和EPOLLOUT都注册上了,结果就是,一直进EPOLLOUT,也就是说连接的套接字一直都可以可写的, 阅读全文
posted @ 2017-01-08 01:42 冷冰若水 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 一、首先需要看一下这两个函数的作用: 根据manual的解释: dup:创建一份oldfd的拷贝,使用最小的文件描述符作为新的文件描述符。 dup2:创建一份oldfd的拷贝,使用指定的newfd作为新的文件描述符。 要看这两个函数是怎么实现的,首先得知道Linux对于文件描述符是怎么处理的,参考这 阅读全文
posted @ 2017-01-07 09:12 冷冰若水 阅读(3085) 评论(0) 推荐(1) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 48 下一页