【问题标题】:Send data with boost::asio::socket_base使用 boost::asio::socket_base 发送数据
【发布时间】:2010-10-16 09:11:13
【问题描述】:

为什么 socket_base 没有 send() 方法?基本上,我想使用 boost::asio 的套接字,比如 linux 套接字描述符:无论底层套接字是 UDP 还是 TCP 都没有关系,你可以调用 read()、write()、sendto() 等...在他们身上。

除了围绕 asio 的 udp 和 tcp 套接字类编写包装类之外,还有更合适的解决方案吗?

【问题讨论】:

    标签: c++ boost-asio


    【解决方案1】:

    您需要使用特定类型的套接字,例如boost::asio::ip::tcp::socket,它是一个基于流的TCP 套接字,或boost::asio::ip::udp::socket,它用于数据报。 socket_base 类只是一个存储通用功能的基类。实际的套接字类包含您正在寻找的所有传输函数,例如发送和接收函数。

    正如您在documentation 中看到的,每个套接字类型都有sendreceive 函数。

    【讨论】:

    • 是的,但是我想抽象套接字类型,这样我就不必编写两组函数(一组用于 UDP 套接字,一组用于 TCP)。例如,在 linux 中,我可以发送(socket_descriptor,buf,len,flags),它适用于 UDP 和 TCP。
    • Boost.ASIO 不以这种方式使用虚函数,因此您需要使用模板才能编写一个将任何类型的套接字作为参数的函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多