自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 libevent学习记录

回调:需要编写函数的处理动作,但是函数的调用时机不需要管。当某个事件产生之后,这个函数才会被调用。事件的产生是随机的。我可以将事件的处理动作注册给操作系统或框架,委托框架或操作系统检测这个时间,事件被检测到之后,处理函数被调用。支持注册事件优先级。可以通过提供的函数设置优先级,默认只有一个优先级。信号时间:linux的信号,windows没有信号。定时器:超时处理,强制接触阻塞。事件驱动,高性能:libevent是基于回调的,支持io、定时器和信号时间。支持多种io多路复用技术。

2025-04-28 13:18:26 185

原创 本地套接字

本地套接字是实现进程间通信的一种方式:进程间通信的方式:本地套接字有两种实现方式:套接字文件中不存储数据,这种文件类似于有名管道文件,数据在内核的某块内存中存储着,套接字文件关联着内核中的内存。通过文件描述符可以对内核的内存进行读写服务器端:客户端:

2025-04-27 20:45:32 126

原创 udp学习

udp是传输层协议,和tcp是一样的。特点:面向无连接的,不安全的,报式传输协议。

2025-04-27 20:15:43 858

原创 IO多路转接之epoll

如果epoll_wait()只通知一次,同时接收端数据的缓存char buf比较小,导致服务器端通信的文件描述符中的数据越来越多,数据不能全部读出,就无法处理客户端的请求。如何解决:在epoll_wait()通知的这一次里面,将客户端发来的数据全部读出:方案1:在接收端准备一个大buf,存储待接收的数据:弊端,客户端发送的数据有多大不可预期,上线不易界定。且向操作系统申请的内存太大,申请会失败。方案2:循环的进行数据接收。

2025-04-27 13:41:55 981

原创 IO多路转接

为什么要写多进程/多线程的并发服务器?因为在进行套接字通信的时候有一些阻塞函数accpet、read/recv、wirte/send等,这些函数需要不停的检测新的客户端的连接,需要不听的调用accept,需要占用一个线程/进程进行检检测此外,发送和接受数据都需要单独的线程或者进程处理阻塞。因此,套接字通信过程中有很多的阻塞操作,需要多线程/多进程处理阻塞任务。

2025-04-24 21:02:13 796

原创 SDL的使用-vscode

编译:这样只创建了个窗口,没有别的实际意义。

2025-04-24 16:11:18 214

原创 TCP状态转换

服务器状态变化:无状态--->listen();

2025-04-24 14:14:51 576

原创 多进程方式实现服务器端并发

虚拟地址空间被复制,用户区和内核区全都被复制,得到一个独立的虚拟地址空间。父进程的数据被修改的时候对子进程没有影响。通信的时候需要接受(read/recv)/发送(write/send)数据,默认阻塞。因此每一个连接都要一个专门负责通信的进程。通信,需要和多个客户端建立连接,并且通信。监听,等待客户端连接(accept,阻塞)用户区:堆区、栈区、全局数据区、代码区。父进程1个,负责监听,等待客户端连接。子进程可以多个,负责通信。内核区:文件描述符表。进程的特点:进程之间有血缘关系。创建子进程:fork()

2025-04-23 15:41:26 165

原创 TCP三次握手和四次挥手

源端口:16位2字节,即当前进程的端口目的端口:16位2字节,对方的端口序号:一个生成的随机数确认序号:确认上次发送给对方的额数据对方是否收到窗口大小:表示接收数据的剩余缓存容量,如果为0,发送端就会阻塞。

2025-04-22 20:51:16 968

原创 TCP通信一些概念

/地址族协议:ipv4/ipv6//2字节的端口+4字节的ip地址+坝8字节的填充//地址族协议:ipv4/ipv6sockaddr数据结构sockaddr和sockaddr_i大小一样,但是_in划分更细。在使用的时候一般用_in,然后再进行强制类型转换。

2025-04-21 18:05:21 704

原创 网络编程一些概念

ipv4:点分十进制字符串,以字符串的形式表现出来,本质是一个整形数,4字节32位,通过3个点分成4份,每份一个字节:192.168.1.111,字节的取值范围:0-255,所以最大而ip地址:255.255.255.255。局域网是一个小的网络:192.168.1.xxxx,在这个小的区域内网络ip是唯一的,在这个网络中的主机可以互相通信,如果局域网连接了外网,那么局域网ip也可以连接外网。char->1字节,int->4字节。小端反过来,低地址存高位字节,高地址位存低位字节:::地高,高低。

2025-04-18 17:15:07 680

原创 信号量semaphone

信号量相当于初始值为n的互斥量,n表示可以同时去访问共享数据区的线程数。

2025-04-17 17:32:48 73

原创 用条件变量实现生产者消费者模型

在公共区外侧有个条件判断,判断公共区是否有数据,消费者使用公共区前要调用函数pthread_cond_wait()生产者消费者模型------生产者线程和消费者线程都去使用公共区,一个往里放,一个往出取。生产者生产数据以后要唤醒条件pthread_cond_signal(broadcast)在多消费者的情况下,pthread_cond_wait() 要放在while循环中。最好支持一个生产者多个消费者模型。加锁,如果公共区没数据就等待。通知阻塞在条件变量的线程。

2025-04-17 17:01:04 258

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除