什么是异步套接字?

Jay*_*Jay 22 c sockets asynchronous

什么是异步套接字?它们与普通套接字(阻塞和非阻塞)有什么不同?

该方向的任何指针或教程的任何链接都会有所帮助.

谢谢.

qrd*_*rdl 27

有三种方式以异步方式与套接字通信:

  1. 打开常规套接字,但不要从中读取(因为read()块),直到你知道它要读取的东西.您可以使用select()或poll()检查是否有要从套接字读取的数据,如果有什么内容,请阅读它,read()不会阻止.

  2. 通过设置O_NONBLOCK带有fcntl()功能的标志,将套接字切换到非阻塞I/O. 在这种情况下read()不会阻止.

  3. O_ASYNC使用FIOASYNC选项设置套接字标志ioctl()(man 7 socket有关详细信息,请参阅参考资料).在这种情况下,SIGIO当有来自套接字的内容时,您将收到信号.

第三种方法是异步套接字.

  • 是否有独立于平台的选项? (2认同)

And*_*ndy 5

UNIX 网络编程中以下五种不同 I/O 模型的比较:套接字网络 API会很有帮助:

阻塞

非阻塞

输入/输出复用

信号驱动 I/O

异步I/O