socket编程的select模型原理是什么?select到底是如何管理套接字的?

lookupheaven 2015-08-04 09:02:10
还有,我找到的例子要么是只判断读要么是只判断写:
fd_set fsets;
FD_ZERO(&fsets);
select(0, &fsets, NULL, NULL, 0);

我能不能
select(0, &fsets, &fsets, NULL, 0);

另外,有的人会把listen套接字放到fsets里边去,有的人又不管,哪个合理一点?
...全文
294 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 版主 2015-08-06
  • 打赏
  • 举报
回复
listen的socket也可以放到里面去了,如果你关注accept事件,他一样会告诉你的;
jiqiang01234 2015-08-04
  • 打赏
  • 举报
回复
直接跳过select模型,用poll或epoll
忘世麒麟 2015-08-04
  • 打赏
  • 举报
回复
引用 2 楼 Razor87 的回复:
[quote=引用 1 楼 sandshaw 的回复:] select 模型原理http://blog.csdn.net/yanheifeng715000/article/details/6592447
刚刚我也是在看这篇文章,我的意思是,select怎么知道某个套接字是否可读写?还是我问的不对?[/quote] 当select返回的时候它循环遍历一边所有监控的资源,看是哪个资源的状态改变使得select结束阻塞的.
lookupheaven 2015-08-04
  • 打赏
  • 举报
回复
引用 1 楼 sandshaw 的回复:
select 模型原理http://blog.csdn.net/yanheifeng715000/article/details/6592447
刚刚我也是在看这篇文章,我的意思是,select怎么知道某个套接字是否可读写?还是我问的不对?
sandshaw 2015-08-04
  • 打赏
  • 举报
回复
飞翔的薄荷 2015-08-04
  • 打赏
  • 举报
回复
select 就是在一段时间内,看看集合里的套接字是否可读、可写等状态。返回超时,错误,或者套接字个数。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧