代码之家  ›  专栏  ›  技术社区  ›  the_drow

ASIO插座的接收/发送功能不好?

  •  7
  • the_drow  · 技术社区  · 15 年前

    数据可以读写到 使用连接的TCP套接字 receive()、async_receive()、send()或 async_send()成员函数。 然而,因为这些可能导致 短写或短读,应用程序 通常使用以下 改为操作:read(), async_read()、write()和 AycCyWrnWrand()。

    我不太明白read()、async_read()、write()和async_write()这样的注释也可能以短写或短读结束,对吧?
    为什么这些功能不一样?
    我应该使用它们吗?
    有人能帮我澄清一下那句话吗?

    2 回复  |  直到 11 年前
        1
  •  6
  •   Dan    15 年前

    这个 阅读 , 异步读 , 异步写 组成 多次调用类函数的函数,直到传输请求的字节数为止。为了方便起见,他们被图书馆收录了。否则,每个开发人员都需要实现相同的逻辑。

    类函数直接包装底层的OS函数,基本上在文档中说明:这些函数可以在所有字节传输之前返回。

    在大多数情况下,您应该使用自由(组合)函数来传输数据。

        2
  •  -1
  •   rhapsodyn    15 年前

    首先,你必须理解“异步”这个词,它的意思只是“不需要等待”。 在调用异步操作之后,将执行以下操作 无需等待 异步操作返回。同时同步 不得不等待 直到上一个同步操作返回。 以下两个来自boost.asio的样本是有意义的: A synchronous TCP daytime server

    (哎呀!声誉不够,第二个示例很容易找到,称为“异步TCP日间服务器”)。