10 2023 档案

linux 多路复用---epoll
摘要:rbr(红黑树):需要检测的文件描述符 rdlist:有数据传递的文件描述符 epoll API: /* #include <sys/epoll.h> //创建一个新的 epoll 实例,在内核中创建了一个数据,这个数据中有两个比较重要的数据, 一个是需要检测的文件描述符的信息(红黑树),还有一个是 阅读全文

posted @ 2023-10-31 11:02 廿陆 阅读(55) 评论(0) 推荐(0) 编辑

linux 多路复用---poll
摘要:poll定义: /* #include <poll.h> struct pollfd { int fd; //委托内核检测的文件描述符 short events; //委托内核检测文件描述符的什么事件 short revents; //文件描述符实际发生的事件(返回的事件) }; //struct 阅读全文

posted @ 2023-10-30 16:59 廿陆 阅读(35) 评论(0) 推荐(0) 编辑

linux IO多路复用 select poll epoll
摘要:I/O多路复用(I/O多路转接)*** ***I/O多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能***,Linux下实现的 I/O 多路复用的系统调用主要有 select、poll 和 epoll。 输入指的是程序数据写入到内存中 从内存读取到文件中是输出 I/O指的是对两端(客户端 阅读全文

posted @ 2023-10-25 11:13 廿陆 阅读(22) 评论(0) 推荐(0) 编辑

linux TCP状态转换 半关闭 shutdown netstat 端口复用 setsockopt
摘要:TCP状态转换:发生在三次握手四次挥手的过程中 黑色为异常的信息; 红色线为客户端; 绿色虚线为服务器端; 报文段寿命: 2MSL(Maximum Segment Lifetime) 主动断开连接的一方,最后进出入一个 TIME_WAIT状态,这个状态会持续: 2msl msl:官方建议:2分钟,实 阅读全文

posted @ 2023-10-24 11:40 廿陆 阅读(59) 评论(0) 推荐(0) 编辑

linux 多进程实现并发服务器 多线程并发
摘要:TCP通信并发** 要实现TCP通信服务器处理并发任务,使用多线程或多进程来解决。 思路: 1. 一个父进程,多个子进程 2. 父进程负责等待并接受客户端的连接 3. 完成通信,接受一个客户端连接,就创建一个子进程用于通信。 客户端: 1 //TCP通信的客户端 2 3 #include <stdi 阅读全文

posted @ 2023-10-24 08:54 廿陆 阅读(87) 评论(0) 推荐(0) 编辑

linux TCP滑动窗口 四次挥手
摘要:TCP滑动窗口 滑动窗口(Sliding window)是一种流量控制技术。早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,同时发送数据,导致中间节点阻塞掉包,谁也发不了数据,所以就有了滑动窗口机制来解决此问题。滑动窗口协议是用来改善吞吐量的一种技术,即容许 阅读全文

posted @ 2023-10-22 11:20 廿陆 阅读(49) 评论(0) 推荐(0) 编辑

linux TCP 三次握手
摘要:TCP三次握手: TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的”连接“,其实是 客户端 和 服务器的内存里保存的一份关于对方的信息,如 IP地址,端口号等。 TCP 可以看成是一种字节流,它会处理 IP 层或以下的层的 丢包、重复以及错误问题。在连接的建立 阅读全文

posted @ 2023-10-12 21:57 廿陆 阅读(23) 评论(0) 推荐(0) 编辑

linux TCP通信实现 服务器端 - 客户端
摘要:服务器端: 1 //TCP通信的服务器端 2 3 #include <stdio.h> 4 #include <arpa/inet.h> 5 #include <unistd.h> 6 #include <string.h> 7 int main() 8 { 9 //1.创建 socket(用于监听 阅读全文

posted @ 2023-10-12 21:12 廿陆 阅读(61) 评论(0) 推荐(0) 编辑

linux TCP 通信流程 套接字函数 socket() bind() listen() accept() connect()
摘要:TCP 和 UDP -> 传输层的协议 UDP: 用户数据报协议,面向无连接,可以单播,多播,广播,面向数据报(类似战争中无线电的广播),不可靠。 TCP: 传输控制协议,面向连接的,可靠的,基于字节流,仅支持单播传输(点对点)。 UDP TCP 是否创建连接 无连接 面向连接 是否可靠 不可靠 可 阅读全文

posted @ 2023-10-12 12:22 廿陆 阅读(52) 评论(0) 推荐(0) 编辑

linux IP 地址转换
摘要:IP地址转换(字符串ip - 整数,主机字节序和网络字节序的转换): 通常,人们习惯用可读性好的字符串来表示 IP 地址,比如用 点分十进制 字符串表示 IPv4 地址,以及用 十六进制 字符串表示 IPv6 地址。 但编程中我们需要把它们转化为整数(二进制数)方能使用。而记录日志时则相反,我们要把 阅读全文

posted @ 2023-10-11 22:45 廿陆 阅读(251) 评论(0) 推荐(0) 编辑

linux socket地址
摘要:socket地址: //socket地址其实是一个结构体,封装端口号和 IP等信息。 后面的 socket 相关的 API 需要使用到这个 socket 地址。 //客户端 --> 服务器(IP 、 Port) 通用 socket 地址: socket 网络编程接口中表示 socket 地址是结构体 阅读全文

posted @ 2023-10-11 20:15 廿陆 阅读(66) 评论(0) 推荐(0) 编辑

linux socket 字节序 大小端检测
摘要:socket(通过文件描述符操作)介绍:一系列的API完成协议的封装和分用 所谓socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈, 阅读全文

posted @ 2023-10-11 10:41 廿陆 阅读(114) 评论(0) 推荐(0) 编辑

linux 封装 分用
摘要:封装:(常用四层为例) 上层协议是如何使用下层协议提供的服务的呢? 其实这是通过封装(encapsulation)实现的。应用程序数据发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。 分 阅读全文

posted @ 2023-10-10 22:18 廿陆 阅读(22) 评论(0) 推荐(0) 编辑

linux 网络协议
摘要:协议: 简介: 协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。 它的三要素是: 语法、语义、时序。为了使数据在网络上从源 到达 目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(pro 阅读全文

posted @ 2023-10-10 17:05 廿陆 阅读(122) 评论(0) 推荐(0) 编辑

linux 网络模型 OSI模型(7层) TCP/IP协议(4层)
摘要:OSI七层参考模型: 七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联。参考模型是国际标准化组织(ISO)指定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语 阅读全文

posted @ 2023-10-10 11:45 廿陆 阅读(111) 评论(0) 推荐(0) 编辑

linux 网络结构模式 MAC地址 子网掩码 端口
摘要:C/S结构:QQ 简介: 服务器-客户机,即 Client - Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。 客户机通过局域网与服务器相连接,接受用户的请求,并通 阅读全文

posted @ 2023-10-09 12:27 廿陆 阅读(50) 评论(0) 推荐(0) 编辑

linux 生产者消费者模型 信号量(灯) 条件变量
摘要:生产者消费者模型: 模型对象:1.生产者(1或多个) 2.消费者(1或多个) 3.容器(商品) 1 /* 2 生产者和消费者模型(粗略版本) 3 生产者未生产 消费者开始消费 发生错误 4 */ 5 #include <stdio.h> 6 #include <pthread.h> 7 #inclu 阅读全文

posted @ 2023-10-08 16:35 廿陆 阅读(31) 评论(0) 推荐(0) 编辑

linux 线程 读写锁
摘要:读写锁:🔴🟠🟡🟢🔵🟣🟤⚫⚪ 当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但是由于互斥锁的排他性,所有其他线程都无法获取锁,也就无法读访问共享资源了,但是实际 阅读全文

posted @ 2023-10-08 10:59 廿陆 阅读(24) 评论(0) 推荐(0) 编辑

linux 线程 死锁
摘要:死锁:🔴⚫🟤🟣🔵🟢🟡🟠 有时,一个线程需要同时访问两个或更多不同的共享资源,而每个资源又都由不同的互斥量管理。当超过一个线程加锁同一组互斥量时,就有可能发生死锁。 两个或两个以上的进程在执行过程中,因争夺共享资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统 阅读全文

posted @ 2023-10-08 09:54 廿陆 阅读(27) 评论(0) 推荐(0) 编辑

linux 线程 互斥锁
摘要:互斥量(锁): 为避免线程更新共享变量时出现问题,可以使用互斥量(mutex 是 mutual exclusion 的缩写)来确保同时仅有一个线程可以访问某项共享资源。可以使用互斥量来保证对任意共享资源的原子访问。 互斥量有两种状态:已锁定(locked) 和 未锁定(unlocked)。任何时候, 阅读全文

posted @ 2023-10-07 19:56 廿陆 阅读(26) 评论(0) 推荐(0) 编辑

linux 线程属性 线程同步
摘要:线程属性:man pthread_attr_ (按两次Tab,会出现相关属性) 1 /* 2 int pthread_attr_init(pthread_attr_t * attr); 3 - 初始化线程属性变量 4 int pthread_attr_destroy(pthread_attr_t * 阅读全文

posted @ 2023-10-07 11:15 廿陆 阅读(5) 评论(0) 推荐(0) 编辑

linux 线程 线程的分离 线程取消 detach cancel
摘要:线程的分离:分离后不能进行连接 1 /* 2 detach a thread 3 int pthread_detach(pthread_t thread); 4 - 功能:分离一个线程,被分类的线程在终止的时候,会自动释放资源返回给系统 5 1.不能多次分离,会产生不可以预料的行为 6 2.不能去连 阅读全文

posted @ 2023-10-07 11:08 廿陆 阅读(37) 评论(0) 推荐(0) 编辑

linux 线程 创建线程 终止线程 连接已终止的线程 create exit join
摘要:创建子线程: 1 /* 2 man pthread: 查询线程系统调用 3 一般情况下, main函数所在的线程称为主线程(main线程),其余创建的线程称为子线程 4 程序中默认只有一个进程,fork()函数调用,2个进程(父子进程) 5 程序中默认只有一个线程(主线程),pthread_crea 阅读全文

posted @ 2023-10-06 11:35 廿陆 阅读(17) 评论(0) 推荐(0) 编辑

linux 线程概述 线程与进程的区别
摘要:线程概述: 与进程(process)类似,线程(thread)是允许应用程序并发执行多个任务的一种机制。一个进程可以包含多个线程。同一个程序中的所有线程均会独立执行相同程序,且共享同一份全局内存区域,其中包括初始化数据段、未初始化数据段,以及堆内存段。(传统意义上的 UNIX 进程只是多线程程序的一 阅读全文

posted @ 2023-10-06 10:14 廿陆 阅读(42) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示