
网络编程
文章平均质量分 91
结合了各方面理论,如TCP/IP协议,系统编程,多线程等等
五张牌
这个作者很懒,什么都没留下…
展开
-
Linux文件操作的C库函数(read,write,lseek)
read_write函数1. read函数函数原型: ssize_t read(int fd, void *buf, size_t count); 参数: fd:文件描述符,open函数的返回值 buf:缓冲区,存储要读取的数据 count:缓冲区能存取的最大字节数 sizeof(buf) 返回值: -1 :失败 >0:读取的字节数 =0:文件读完了 2. write函数函数原型:ssize_t write(int fd, void *buf, size..原创 2020-07-02 17:04:56 · 961 阅读 · 0 评论 -
muduo网络库学习笔记(1)——thread类
Thread类图Thread::start()调用的是startThread(…)关于startThread(…)函数,它的形参是ThreadDate类,下面是该类的结构体`struct ThreadData{typedef muduo::Thread::ThreadFunc ThreadFunc;ThreadFunc func_;string name_;pid_t* tid_;CountDownLatch* latch_;ThreadData(ThreadFunc func,co原创 2020-07-29 21:22:22 · 286 阅读 · 0 评论 -
muduo网络库学习笔记(2)—Timestamp类及时间相关的函数
muduo网络库学习笔记(1)—Timestamp类1. 时间戳(Timestamp)类图一个常量kMicroSecondsPerSecond,表示每秒所对应的微秒数,成员变量microSecondsSinceEpoch_表示到1970-01-01 00:00:00 UTC的微秒数2. 关于使用时间的API先看三个时间结构体:struct timeval{ long tv_sec;//秒 64位 8字节 long tv_usec;//微秒};struct tm { int t原创 2020-08-10 14:40:21 · 362 阅读 · 0 评论 -
muduo网络库学习笔记(3)——Singleton类以及单例模式的总结
先介绍一下单例模式:https://www.cnblogs.com/sunchaothu/p/10389842.html上文所讲的几种单例模式从懒汉式(Lazy-Initialization)的方法升级到使用锁机制和智能指针,再升级到使用局部静态变量(关于静态变量的特性:如果当变量在初始化的时候,并发同时进入声明语句,并发线程将会阻塞等待初始化结束),对加深C++特性大有帮助。但在muduo库中采用有pthread_once实现单例模式:#ifndef MUDUO_BASE_SINGLETON_H原创 2020-08-12 20:59:03 · 279 阅读 · 0 评论 -
muduo网络库学习笔记(4)——FileUtil类以及文件读写操作
先介绍关于获取文件信息的函数:#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>//获取path路径的文件信息int stat(const char *path, struct stat *buf);//获取文件描述符fields的文件信息int fstat(int filedes, struct stat *buf);//类似于stat函数,但当参数1是符号链接时,返回该符号链接的原创 2020-08-13 15:39:31 · 602 阅读 · 0 评论 -
阻塞模式和非阻塞模式下send、sendto、recv、recvfrom的表现
首先socket在默认情况下是阻塞状态的(未指异步操作以及其它一些特殊用途下,直接默认为非阻塞),这就使得发送以及接收操作处于阻塞的状态,即调用不会立即返回,而是进入睡眠等待操作完成。下面把讨论点分为发送以及接收。一、发送选用send(这里特指TCP)以及sendto(这里特指UDP)来描述首先需要说明的是,不管阻塞还是非阻塞,在发送时都会将数据从应用缓冲区拷贝到内核缓冲区(SO_RCVBUF选项声明,除非缓冲区大小为0)。1、在阻塞模式下send操作将会等待所有数据均被拷贝到发送缓冲区后才会返回。原创 2020-09-23 10:46:08 · 3363 阅读 · 1 评论 -
网络编程使用标准I/O的危险以及正确使用RIO包
一、各IO包的关系Unix I/O模型是在操作系统内核中实现的,应用程序可以通过诸如open、close、lseek、read、write和stat这样的函数来访问Unix I/O。较高级别的RIO和标准I/O函数都是基于Unix I/O函数来实现的。RIO函数它们自动处理不足值,并且为读文本行提供了一种高效的带缓冲的方法。标准I/O函数提供了Unix I/O函数的一个更加完整的带缓冲的替代品,包括格式化的I/O例程,如printf和scanf。二、网络编程不应该使用标准I/O通过一个例子可以看到原创 2021-01-20 11:00:02 · 1091 阅读 · 1 评论