2015-02-24 45 views
0

我认为Overlapped I/O被发明用于服务器端,主要是为了能够处理数千个客户端。所以我不认为有什么理由在客户端使用它。我的假设是否正确?客户端使用的重叠I/O也是?

回答

1

您是否假设客户端一次只需要1个连接?一个“简单”的浏览器可以打开10个页面,下载10个文件,播放10个视频等。重叠的I/O对于客户保持“响应”是一个很好的方式。

1

这不是客户/服务器问题。这是一个工作量问题。客户通常没有任何理由同时保持许多未完成的IO。这是异步IO的主要用例。

端口扫描程序将是客户端异步IO的一个很好的例子。

1

编写基于IOCP的服务器所需的代码与编写客户端所需的代码相同。唯一的区别是连接建立,ConnectEx vs AcceptEx

恕我直言,没有理由不使用IOCP进行客户端通信。

+0

[重叠的I/O](https://msdn.microsoft.com/en-us/library/aa365683.aspx)和[I/O完成端口](https://msdn.microsoft.com/zh-cn/ -us/library/aa365198.aspx)不是一回事。您可以 - 也可以经常 - 执行与IOCP以外的同步对象重叠的I/O。 – IInspectable 2015-03-20 21:16:03

+0

是的,但这并不能使我的答案无效。 – 2015-03-20 21:34:03

+0

该问题具体询问异步I/O。你的回答只解决了这个问题,因为IOCP是**一种同步异步I/O的方法。它没有直接解决这个问题。 – IInspectable 2015-03-20 21:39:52