首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有重叠I/O的非阻塞套接字

具有重叠I/O的非阻塞套接字
EN

Stack Overflow用户
提问于 2012-09-18 17:52:04
回答 1查看 4.2K关注 0票数 3

我正试图在套接字丛林中工作,遇到了I/O重叠的非阻塞套接字。我家里有三本书只提到了这个概念,但并没有真正地解释它,也没有给我任何例子。

所以我要找的是一篇文章,里面有一个例子来解释这个get,或者只是一个我可以自己解决的例子。如果这是windows的话就好了,但我想我应该也能把它从unix上转移过来。

我不介意一本书作为来源,但我很高兴能避免再花50美元。到目前为止,我只发现了非常基本的概念以及与其他套接字模型的基本比较。这并不是我不理解他们的概念,但我希望看到他们的行动,并可能得到一个很好的解释,他们是如何工作的。(我一点也不介意长篇文章:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-18 20:08:50

短语“非阻塞套接字”通常指的是使用FIONBIO套接字选项,该选项使对read()的调用即使没有准备好读取的数据也会立即返回。(返回EWOULDBLOCK错误。)

重叠I/O是特定于Windows API的东西(例如,在UNIX上不可用)。不使用FIONBIO套接字选项,也不使用传统的Berkeley套接字API函数调用(read()等)。

(有关Linux上的POSIX等效项,请参阅'man aio‘或在您最喜欢的搜索引擎中键入man aio。)

既然你已经理解了“非阻塞套接字”和“重叠I/O”是两种不同的方法(不要混为一谈),那么找到关于这两种方法的有用文章应该会容易得多。

关于重叠I/O的MSDN文档实际上非常好。如果您正在进行Windows编程,那么在性能和可伸缩性非常重要的情况下,您确实需要使用重叠的I/O。这是一个很好的起点:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365603%28v=vs.85%29.aspx

(这篇MSDN文章是关于管道的,但是使用套接字也是一样的。)

此外,请注意,WaitForMultipleObjects()的伸缩性不如使用I/O完成端口,但首先要熟悉前者。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12474521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档