【问题标题】:Is Overlapped I/O used on the client side also?客户端是否也使用了重叠 I/O?
【发布时间】:2015-02-24 12:37:27
【问题描述】:

我认为 Overlapped I/O 的发明是为了在服务器端使用,主要是为了能够处理数千个客户端。所以我认为没有任何理由在客户端使用它。我的假设正确吗?

【问题讨论】:

    标签: c++ windows sockets network-programming overlapped-io


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • Overlapped I/OI/O Completion Ports 不是一回事。您可以(并且经常这样做)使用 IOCP 以外的同步对象执行重叠 I/O。
        • 是的,但这根本不会使我的答案无效。
        • 该问题专门询问异步 I/O。您的回答仅解决了这个问题,因为 IOCP 是同步异步 I/O 的一种方式。它没有直接解决这个问题。
        • 基于 IOCP 的 I/O 是异步的,它在客户端和服务器中一样有用。这就是我的回答所说的。您可能会将其视为一个不完整的答案,但我不认为替代异步 I/O 方法值得使用。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多