摘要: 目录select函数原型细节fdsetfdset操作函数 select函数原型 使用select这种IO多路转接方式需要调用一个同名函数select,这个函数是跨平台的,Linux、Mac、Windows都是支持的。程序猿通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的状态,其实就是检测这 阅读全文
posted @ 2023-11-02 23:46 LiviaYu 阅读(18) 评论(0) 推荐(0)
摘要: 目录作用方式selectpollepoll过程 作用 处理服务器的并发 IO多路转接也称为IO多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或 阅读全文
posted @ 2023-11-02 16:03 LiviaYu 阅读(54) 评论(0) 推荐(0)
摘要: 目录 阅读全文
posted @ 2023-11-02 00:08 LiviaYu 阅读(11) 评论(0) 推荐(0)
摘要: 目录单线程多线程 在真实的服务器客户端模型中,服务器和客户端的关系应为1:n 单线程 // server.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <arpa/i 阅读全文
posted @ 2023-10-25 16:17 LiviaYu 阅读(34) 评论(0) 推荐(0)
摘要: 目录服务器端客户端(由于接口不同,部分函数不同) 服务器端 #include <cstdio> #include<arpa/inet.h> #include<iostream> #include<unistd.h> using namespace std; int main() { printf(" 阅读全文
posted @ 2023-10-25 12:44 LiviaYu 阅读(13) 评论(0) 推荐(0)
摘要: 目录 在tcp的服务器端, 有两类文件描述符 监听的文件描述符 只需要有一个 不负责和客户端通信, 负责检测客户端的连接请求, 检测到之后调用accept就可以建立新的连接 通信的文件描述符 负责和建立连接的客户端通信 如果有N个客户端和服务器建立了新的连接, 通信的文件描述符就有N个,每个客户端和 阅读全文
posted @ 2023-10-21 13:45 LiviaYu 阅读(40) 评论(0) 推荐(0)
摘要: 目录创建套接字绑定函数listen函数accept函数客户端connect()函数两套通信函数 创建套接字 #include <sys/socket.h> // 创建一个套接字 int socket(int domain, int type, int protocol); 参数: domain: 使 阅读全文
posted @ 2023-10-21 03:18 LiviaYu 阅读(35) 评论(0) 推荐(0)
摘要: 目录字节序和大小端大小端转换函数IP地址转换字符串到整形 小段->大端大端->小端 字符串->字符串sockaddr结构通信流程服务器端流程服务器端流程 字节序和大小端 字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,也就是说对于单字符来说是没有字节序问题的,字符串是单字符 阅读全文
posted @ 2023-10-18 21:35 LiviaYu 阅读(19) 评论(0) 推荐(0)
摘要: 目录线程池原理线程池组成 C语言线程池https://github.com/LiviaYu1/ThreadPoolC 线程池原理 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会 阅读全文
posted @ 2023-10-11 00:12 LiviaYu 阅读(20) 评论(0) 推荐(0)
摘要: 目录基本结构源码map独有的operator[] 和set的区别 set中key就是value,value就是key 而map中value中有key和data 基本结构 key不能改 data可以改 源码 仍然是一步步的传递 这里的迭代器改为了一个普通的iterator select1st的实现 m 阅读全文
posted @ 2023-09-21 16:48 LiviaYu 阅读(6) 评论(0) 推荐(0)