了解实现的select()函数

时间:2013-06-26 18:04:37

标签: c++ sockets networking select io

我正在研究网络项目(套接字)。我读过一些像link>>link>>的文章,但我无法理解它们。我想处理服务器端的操作,我应该理解它们。现在我认为 readfds 处理传入数据操作(我是对的吗?我不知道)和 writefds < / strong>是处理传出数据(用send()方法)操作(我是对的吗?我不知道)。最后一个; exceptfds 是处理套接字异常,如断开/关闭操作(我是对的吗?我不知道)。这些只是我的问题,我对它们一无所知(没有文章描述),我想在这里要求他们理解。有人可以帮我这个吗?我将实现I / O系统服务器端(高性能),我需要非常了解它们!感谢...

1 个答案:

答案 0 :(得分:2)

从最普遍的意义上讲,select()是一种让应用程序等到有趣的事情发生的方式。这个有趣的事件可以是:

  • 您在readfds中列出的其中一个套接字上提供了数据,因此从该套接字尝试read()不会阻止。

  • 您在writefds中列出的其中一个套接字上可以使用写入空间,因此尝试write()到该套接字不会阻止。

  • exceptfds中列出的其中一个插座上发生了异常(例如收到的带外数据)。

  • 您在timeout中指定的时间已过,但没有其他任何事情发生。