我不太明白第一个参数的目的select
功能。维基百科将其描述为所有集合中的最大文件描述符加上 1 。为什么+1以及为什么select
需要这些信息吗?
在 *Nix 系统中,文件描述符只是系统表的索引,并且fd_set
结构包含与这些索引相对应的位掩码。当描述符被添加到fd_set
,相应位被使能。select()
需要知道最高的描述符值,以便它可以循环遍历这些位并知道停在哪一位。
在 Windows 上,套接字由内核对象的句柄表示,而不是由索引表示。这fd_set
结构体包含一个套接字句柄数组和数组中套接字数量的计数器。这边走,select()
只能循环遍历数组,这就是为什么第一个参数select()
在 Windows 上被忽略。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)