首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
在IO复用模型的关键是熟练掌握select函数,该函数的原
[问答题]
在I/O复用模型的关键是熟练掌握select函数,该函数的原型是
int select(int maxfd, fd_set *readset, fd_set *writeset, fd_set *exceptset,
const struct timeval *timeout);
a)请详细解释select函数的参数的意义,以及执行结果。
b)如何利用select函数构造一个最简单的多协议服务器,同时提供TCP和UDP服务?画出进程结构图。
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(4)
分享
纠错
1个回答
添加回答
0
星辰大海的碎片
maxfd参数是所以监视的描述字中最大的描述字加1。中间三个参数分别表示监视的不同条件的描述字集合。其中readset为读描述字集合,writeset为写描述字集合,execptset为异常描述字集合。Timeout参数为select函数最长睡眠时间。
Select函数有三种执行情况:
永远等待下去:仅在有一个或以上描述字准备好i/o才返回,为此,我们将timeout设置为空指针。
等待固定时间:在有一个描述字准备好时返回,但不超过由timeout参数指定的秒数和微秒数。
根本不等待,检查描述字后立即返回,这称为轮询。这种情况下,timeout必须指向结构timeval,且定时器的值必须为0。
Select函数的返回值如下:
如果在指定超时值到达之前有一个或多个描述字满足条件,则函数返回值大于零;
如果超时时间到时,没有描述字满足条件,函数返回值为0;
如果select函数阻塞过程中,发生错误,函数返回值为-1;
多协议服务器可以由一个执行线程构成,该线程既可以在TCP也可以在UDP上使用异步IO来处理通信。服务器最初打开两个套接字,一个使用无连接的传输,一个使用面向连接的传输,使用异步IO等待两个套接字之一就绪。
发表于 2017-05-07 20:03:45
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
网络基础
上传者:
星辰大海的碎片
难度:
1条回答
4收藏
755浏览
热门推荐
相关试题
RARP的作用是什么?
华为
网络基础
评论
(17)
C类地址最大可能子网位数是?
华为
网络基础
评论
(10)
关于语句 A a = new A(...
Java
评论
(1)
下面关于 Java 中异常相关的说...
Java
评论
(1)
来自
2024年秋招-蚂蚁集团...
对于矩阵A1(20*25)、A2(...
复杂度
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题