当前位置: 首页 > news >正文

自律 linux 第 36 天

昨天学习IO多路复用的时候使用的是select函数接口, select需要在应用层建立一个放套接字的表,然后传入内核中,再又内核将响应的套接字表传回应用层,这样耗费时间和资源,而且这个表只能存放最多1024个套接字,受限比较严重。而今天学习的是使用epoll函数接口来实现IO多路复用。

epoll与select相比较,是直接在内核创建的链表来存放套接字,调用epoll_create()函数就能创建一个存放套接字的,在内核中的链表,这样节约了大量的时间,还没有了1024的限制。epoll通过epoll_ctl()函数实现将套接字添加进套接字集合,或者从套接字集合中将其删除,只需要将epoll_ctl中的某个参数设置为EPOLL_CTL_ADD 或者 EPOLL_CTL_DEL就能实现对应功能。

然后使用epoll_wait()对套接字集合进行检测,若有客户端在发消息, epoll_wait()检测到之后就会返回需要响应的套接字个数的struct epoll_event类型的结构体,这些结构体中就有需要响应的套接字,根据这些套接字做出对应的接收消息或建立连接等操作即可。

今天实现了使用epoll实现TCP的多端通信,让多个客户端发送消息给服务端,服务端再将消息转发给其他客户端,实现一个群聊的效果,就是在epoll实现多端通信的基础上,将产生的通信套接字都放在一个数组中,然后接收某个客户端的消息后,在发消息的时候将消息发往其余的所以客户端。

相关文章:

  • 提升精力的高效方法指南
  • 基于Django的协同过滤算法养老新闻推荐系统的设计与实现
  • ai 提示词技巧
  • 深入理解 C 语言函数的定义
  • Debian的initrd.img文件
  • 服务器python项目部署
  • 视觉 Clutter
  • 稳定性保障-前端
  • Python机器学习小项目实战:随机森林算法实现信用卡欺诈检测
  • 【漫话机器学习系列】123.感知机学习(Perceptron Learning)
  • InternalError: too much recursion
  • 复合机器人:重新定义生产流程的核心引擎
  • 【leetcode hot 100 160】相交链表
  • STM32时钟系统
  • 24、如何在C++中创建和管理线程?【中高频】 -
  • 实现Django和Transformers 构建智能客服大模型(模拟订单系统)
  • olmOCR:高效精准的 PDF 文本提取工具
  • JavaScript中的引用类型与内存地址
  • Mysql回表查询、索引覆盖等概念
  • [java][JwtUtils ]生成token以及校验token相关方法
  • 做盗版网站会坐牢吗/关键词首页排名优化公司推荐
  • 长春 做网站多少钱/首页关键词排名优化
  • app应用网站html5模板/seo综合查询国产
  • 2016网站建设总结/百度关键词如何优化
  • 上海公司牌照价格最新价格/seo博客教程
  • 路由器搭建wordpress/上海专业seo