
unix网络编程
文章平均质量分 58
午夜零时
这个作者很懒,什么都没留下…
展开
-
enable_if模板编程实现字节序转换模板
使用enable_if模板编程简单实现字节序转换模板原创 2023-02-25 11:52:09 · 602 阅读 · 0 评论 -
unix网络编程(四) 线程池并发服务器
问题2解决思路就是利用回调机制,我们同样可以借助结构体的方式,对任务进行封装,比如任务的数据和任务处理回调都封装在结构体上,这样线程池的工作线程拿到任务的同时,也知道该如何执行了。创建线程时需要给出入口函数thrRun,该函数的核心功能是从任务队列取任务执行,执行结束再取任务,循环上述步骤。线程池是一个抽象概念,可以简单的认为若干线程在一起运行,线程不退出,等待有任务处理。核心功能:向任务队列添加任务,并通知因任务队列空而阻塞的线程。2.线程池上的线程如何能够执行不同的请求任务?原创 2022-12-11 20:59:55 · 629 阅读 · 0 评论 -
unix网络编程(四)epoll反应堆
epoll_wait()返回cfd—>cfd回调senddata()—>将cfd摘下来监听读事件—>…epoll_wait()返回cfd—>cfd回调recvdata()—>将cfd摘下来监听写事件—>lfd满足accept—>返回cfd---->read()读数据—>write()给客户端回应。有客户端连接上来—>lfd调用acceptconn()—>将cfd挂载到红黑树上监听其读事件—>有监听fd事件发送—>返回监听满足数组—>判断返回数组元素—>,其中有具体的epoll和epoll反应堆模型的分析。原创 2022-11-21 11:29:20 · 385 阅读 · 0 评论 -
unix网络编程(三) 两种模式下的epoll服务端
Edge Triggered (ET) 边缘触发只有数据到来才触发,不管缓存区中是否还有数据。Level Triggered (LT) 水平触发只要有数据都会触发。LT模式是默认的工作模式,在这种模式下epoll相当于一个效率较高的poll。原创 2022-11-14 15:49:28 · 762 阅读 · 0 评论 -
unix网络编程(二) select实现tcp的sever端
(select)初始化fd_set ===> select监听fd_set ===> fd_set中未变化的位置置零(0)依据fd_set中剩余的有变化的位置(1) ===> 判断是监听套接字还是已连接的套接字。select 即是采用轮询内核的方式,获知哪些连接发送或接受消息了。(start)监听套接字:创建绑定监听。select 最大监听1024个连接。原创 2022-11-04 18:02:30 · 623 阅读 · 0 评论 -
unix网络编程(一) 封装常用的socket函数
sever端socket连接的流程:创建socket ====> 绑定ip和端口 ====> 监听listen ====> 接受连接accept。由于上述流程是通用的,过程中还有大量的错误判断和网络字节序的转换,因此封装成一些函数方便调用。其中accpet易受信号中断和软件中断,使用goto语句,在中断时再次accept。原创 2022-11-04 12:20:29 · 378 阅读 · 0 评论