![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux网络编程
无.处安放的灵魂
低调低调...观望期他大佬。
展开
-
UDP网络通信
文章目录一、TCP和UDP通信优缺点1、TCP2、UDP二、UDP通信server和client流程三、关于recvfrom和sendto函数四、详细代码1、服务器2、客户端五、测试结果一、TCP和UDP通信优缺点1、TCP面向连接的,可靠数据包传输。对于不稳定的网络层,采取完全弥补的通信方式。 丢包重传。优点: 稳定。数据流量稳定、速度稳定、顺序缺点:传输速度慢。相率低。开销大。使用场景:数据的完整型要求较高,不追求效率。 大数据传输、文件传输。2、UDP无连接的,不可靠的数据报传递。对于原创 2020-08-10 13:31:33 · 272 阅读 · 0 评论 -
网络通信线程池模型
文章目录一、线程池模型原理分析1、线程池描述结构体2、线程池模块分析二、详细代码一、线程池模型原理分析1、线程池描述结构体struct threadpool_t { pthread_mutex_t lock; /* 用于锁住本结构体 */ pthread_mutex_t thread_counter; /* 记录忙状态线程个数de琐 -- busy_thr_num */ pthread_cond_t queue_not_full原创 2020-08-09 13:38:02 · 153 阅读 · 0 评论 -
epoll反应堆模型
文章目录一、总述二、epoll反应堆逻辑一、总述epoll 反应堆模型:epoll ET模式 + 非阻塞、轮询 + void *ptr。原来: socket、bind、listen – epoll_create 创建监听 红黑树 – 返回 epfd – epoll_ctl() 向树上添加一个监听fd – while(1)---- epoll_wait 监听 – 对应监听fd有事件产生 – 返回 监听满足数组。 – 判断返回数组元素 – lfd满足 – Accept – cfd 满足 – read(原创 2020-08-07 13:34:58 · 300 阅读 · 0 评论 -
epoll两种触发模式
文章目录一、epoll的两种触发模式1.LT水平触发(默认)2.ET边沿触发二、详细代码1、服务器2、客户端三、测试效果![在这里插入图片描述](https://img-blog.csdnimg.cn/20200805131447439.png)一、epoll的两种触发模式1.LT水平触发(默认)LT(level triggered):LT是缺省的工作方式,并且同时支持block和no-block socket。在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。原创 2020-08-05 13:15:52 · 2410 阅读 · 0 评论 -
epoll函数实现多路IO转接
文章目录一、实现思路1、服务器2、客户端二、详细代码1、服务器2、客户端三、测试一、实现思路1、服务器1)socket()2)set_sockopt() 端口复用。3)bind() 绑定服务器。4)listen() 设置监听上限。5)epoll_create() 创建epoll模型,efd指向红黑树跟结点。7)epoll_ctl() //将lfd及对应的结构体挂到树上,efd可以找到该树。8)循环监听:epoll_wait() //epoll为server阻塞监听事件,ep为struct原创 2020-08-04 13:33:32 · 165 阅读 · 0 评论 -
poll函数实现多路IO转接设计思路
文章目录一、实现思路1、服务器2、客户端3、相关数据结构和函数4、poll总结二、详细代码1、服务器2、客户端三、测试一、实现思路1、服务器1)socket()2)bind()3)listen()4)struct pollfd client[OPEN_MAX]; //创建poll所需的结构体。5)设置client[0], 首要监听的是,服务器事件,等待客服端连接。6)poll(),循环阻塞监听客户端连接请求。7)此案例中,只判断读事件。2、客户端1)socket() 创建socket。原创 2020-08-03 14:05:01 · 137 阅读 · 0 评论 -
select实现多路IO转接设计思路
文章目录一、实现思路1、服务器2、客户端1、服务器一、实现思路1、服务器socket(); //设置套接字bind(); //绑定服务器listen(); //设置监听上限fd_set reset, allset; //创建“读”监听集合FD_ZERO (&allset); // 将“读”监听集合清空FD_SET (lfd, &allset); //将lfd添加至读集合种.while (1){ rest = allset; //保存读监听集合 ret =原创 2020-08-02 14:06:02 · 152 阅读 · 0 评论 -
简易的客户端和服务器通信
文章目录一、TCP通信流程1.server服务器端:2.client 客户端:二、详细代码1.服务器2.客户端3.测试一、TCP通信流程1.server服务器端:1)socket() 创建socket。2)bind() 绑定服务器地址结构。3)listen() 设置监听上限。4)accept() 阻塞监听客户端连接。5)read(fd…) 读socket缓冲区内容。6)实现需要的功能。8)close() 关闭 fd。2.client 客户端:1)socket() 创建s原创 2020-07-31 13:33:56 · 227 阅读 · 0 评论 -
利用libevent库实现简易的网络通信
文章目录一、功能介绍二、服务器和客户端通信架构1、服务器2、客户端三、详细代码1、服务器代码2、客户端代码四、测试效果一、功能介绍1)使用libevent库实现客户端和服务器的连接;2)实现回显功能:①在窗口输入字符串到客户端‘②客户端发送字符到服务器;③服务器接收到字符后,将字符转换成大写;④服务器将大写字符发送给客户端;⑤客户端显示大写字符。二、服务器和客户端通信架构1、服务器1)创建event_base。2)创建服务器连接监听器 evconnlistener_new_bi原创 2020-07-29 22:52:07 · 508 阅读 · 0 评论