首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux下select的用法--实现一个简单的回射服务器程序

2. 函数说明:可以同时监控多个文件描述符是否发生了读写或者异常。(有点像windows下的waitformultipleobjects,可以同时等待多个事件) 参数说明: 1)nfds:要监控的文件描述符的最大值加1,这个值不能错。 2)readfds:指向fd_set的指针。这是一个集合,专门用于监视读取数据的。所有需要监控读取数据的描述符都需要放进这个集合中。比如你需要监控4描述符的读取数据,就把4放进这个集合之中。 3)writefds:同上,这里是专门监视写的集合 4)exceptfds:同上,这里是专门监视异常的集合 5)timeout:超时。指向的timeval 结构体。 如果参数设为NULL,则select是阻塞的。 如果不为空,则表示超时时间(当结构体里面的成员都设为0时,表示不阻塞,立即返回)。

02

socket网络编程(三)——select多路复用问题

在上文《socket网络编程(二)—— 实现持续发送》我们提到了多客户端的时候,多台客户端发送数据到服务端的话,只能有一台客户端可以正常发送和接受数据,另外一台完全没有反应,那这个问题怎么解决呢?很多人可能第一反应想到利用多线程技术,线程多的话用线程池来维护。的确,多线程确实可以实现这个效果,但是,可能很多看见这个但是就不怎么开心了,却不知很多科学科技的进步都是这个但是引发的。但是一个多线程编程很麻烦又容易出错,二是如果连接有几千个的话,线程间切换的开销确实是很大。如果能够在一个线程里就实现这个效果的话,那该多好啊!

01
领券