社区
C++ 语言
帖子详情
有没有了解epoll模型的,进来谈谈,最好是UDP的。
dbkcpp
2008-10-21 03:18:39
大家好,我最近在做一个im系统,支持udp和tcp协议,开发环境是linux,模型打算采用epoll,我对采用tcp的epoll模型比较熟悉,但是对于udp的不太熟,因为udp服务器端只是始终有一个套接字资源,而不像tcp,每次accept之后产生一个新的套接字资源,这样这个新产生的套接字资源也可以进行侦听,而udp始终都是一个套接字,面对众多的用户连接,我感觉应该不能满足需要的,有没有有过这方面经验的介绍下啊
...全文
591
16
打赏
收藏
有没有了解epoll模型的,进来谈谈,最好是UDP的。
大家好,我最近在做一个im系统,支持udp和tcp协议,开发环境是linux,模型打算采用epoll,我对采用tcp的epoll模型比较熟悉,但是对于udp的不太熟,因为udp服务器端只是始终有一个套接字资源,而不像tcp,每次accept之后产生一个新的套接字资源,这样这个新产生的套接字资源也可以进行侦听,而udp始终都是一个套接字,面对众多的用户连接,我感觉应该不能满足需要的,有没有有过这方面经验的介绍下啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jacketcyh
2012-06-19
打赏
举报
回复
.....
ro360
2011-12-02
打赏
举报
回复
请问楼主你最后实现了吗?你是怎么实现的?可以分享下经验吗?
linyangwo2008
2010-11-01
打赏
举报
回复
用udp+epoll是为了提高cpu的利用率
dbkcpp
2008-10-21
打赏
举报
回复
[Quote=引用 10 楼 xhs_lh04 的回复:]
另外如果用UDP,为什么要用EPOLL?
[/Quote]
那如果是单纯的udp协议,在linux下,做服务器端,应该采用什么方法呢?以前没有做过udp的服务器端!
dbkcpp
2008-10-21
打赏
举报
回复
[Quote=引用 10 楼 xhs_lh04 的回复:]
另外如果用UDP,为什么要用EPOLL?
[/Quote]
因为是服务器同时接受udp和tcp的连接,所以在一个端口我绑定了两个套接字,一个是tcp的一个是udp的
dbkcpp
2008-10-21
打赏
举报
回复
嗯,多谢楼上的兄弟。
xhs_lh04
2008-10-21
打赏
举报
回复
另外如果用UDP,为什么要用EPOLL?
xhs_lh04
2008-10-21
打赏
举报
回复
可以用libevent库,里面有包装epoll
很少用使用UPD,LINUX EPOLL用TCP我做过,UDP没试过,理论上应该可以的,可以探讨
帅得不敢出门
2008-10-21
打赏
举报
回复
支持下.
dbkcpp
2008-10-21
打赏
举报
回复
嗯,楼上的说的很有道理,关键在于我的服务器程序是同时支持tcp和udp的所以采用了epoll。
lala_benben
2008-10-21
打赏
举报
回复
很少看见UDP还用EPOLL的。。。这样就失去了EPOLL的优势
dbkcpp
2008-10-21
打赏
举报
回复
thanks!
Longinc
2008-10-21
打赏
举报
回复
帮顶下
dbkcpp
2008-10-21
打赏
举报
回复
大家一起来探讨探讨啊!
dbkcpp
2008-10-21
打赏
举报
回复
我现在有个疑惑就是:因为我做的是服务端程序,所以负载量比较大,而udp协议做服务器端编程的时候,
无论与多少个客户通讯,他都始终是一个套接字资源在进行通讯,这样的话,效率。。。。。。
dbkcpp
2008-10-21
打赏
举报
回复
我自己顶
谈谈
Linux
epoll
惊群问题的原因和解决方案
然而由于select,poll
没
有可扩展性,存在O(n)O(n)问题,因此在带宽越来越高,服务器性能越来越强的趋势下,越来越多的代码将收敛到使用
epoll
的情形,所以有必要对其进行深入的讨论。”,显然,
epoll
_wait刚刚取到事件的时候的时候,不可能马上就调用accept去处理,事实上,逻辑在
epoll
_wait函数调用的ep_poll中还
没
返回的,这个时候,显然符合“仍然有未处理的事件”这个条件,显然这个时候为了实现这个语义,需要做的就是通知别的同样阻塞在同一个
epoll
句柄睡眠队列上的进程!
谈谈
golang的netpoll原理(一)
今天
谈谈
golang源码netpoll部分实现的细节和协程阻塞调度原理
epoll
原理
epoll
是linux环境下i/o多路复用的
模型
,结合下图简单说明
epoll
工作原理 上图说明了
epoll
生成描
epoll
表的基本流程,生成socket用来绑定和监听新的连接,将该socket放入
epoll
内核表,然后调用wait等待就绪事件。 当
epoll
wait返回就绪事件时,判断是否是新的连接,如果是新的连接则将描述符加入
epoll
表,监听读写事件。如果不是新的连接,说明已建立的连接上有读或写就绪事件,这样我
epoll
Epoll
使用详解
epoll
- I/O event notification facility 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是
epoll
。 相比于select,
epoll
最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目...
I/O多路复用【Linux/网络】(C++实现select、poll和
epoll
服务器)
I/O 多路复用(也叫多路转接)是一种解决方案,它可以让一个进程或线程同时监控多个文件描述符(通常是网络套接字),并在其中一个或多个文件描述符准备好进行 I/O 操作时(至少一个),通知应用程序进行相应的读写操作。这样,应用程序可以在等待数据的过程中执行其他任务,而不会被阻塞,从而提高了程序的性能和响应速度。I/O 多路复用的实现方式有多种,比如 select,poll,
epoll
等,它们各有优缺点,具体的选择要根据应用场景和需求来决定。
谈谈
网络编程(基于C++)
谈一些我自己的看法:从我的理解上,对于大部分网络库而言,很多都是I/O密集型的,这样仿佛采用 Proactor 模式更有优势,但是 linux 下
没
有和 windows 下 IOCP 类似的机制,但是可以采用
epoll
加任务队列的方式实现一套,但是仿佛很复杂,我想自己实现就算了吧。》我认为是不二的选择,这本书涵盖内容很多,如果对于只是实现C/S通信的网络库而言,仅需要
了解
其中介绍
UDP
和 TCP 的章节就好,扎实的理论基础会为你以后遇到网络传输中出现的问题给予很好的解释,也便于你解决这些问题。...
C++ 语言
64,701
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章