首页
题库
面试
求职
学习
竞赛
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收藏
775浏览
热门推荐
相关试题
C类地址最大可能子网位数是?
华为
网络基础
评论
(10)
RARP的作用是什么?
华为
网络基础
评论
(17)
训练神经网络的时候可能会遇到模型迟...
机器学习
评论
(1)
执行以下代码,如果想让div元素的...
HTML
评论
(1)
乘除
数论
基础数学
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题