【问题标题】:How to create a Boost.Asio socket from a native socket?如何从本机套接字创建 Boost.Asio 套接字?
【发布时间】:2010-12-12 21:31:36
【问题描述】:

我只是想从现有的本机套接字创建提升 ip::tcp::socket。在assign function 中,第一个参数必须是“protocol_type”,第二个参数必须是“native_type”,但它从未解释它们是什么,也没有给出其使用示例。

我猜第二个应该是套接字描述符,但我真的很感激澄清。

void SendData (int socket, std::string message)
{
    boost::asio::io_service ioserv;
    boost::asio::ip::tcp::socket s(ioserv);
    s.assign(/* what goes here? */, /* ..and here? */);
    s.send(boost::asio::buffer(message));
}

【问题讨论】:

    标签: c++ networking boost network-programming boost-asio


    【解决方案1】:

    “本机类型”只是套接字句柄,在这种情况下,int 存储在“套接字”中。

    “协议类型”是协议。对于使用流套接字的标准 IP 上的 TCP,这将是 boost::asio::ip::tcp::v4() 的返回值。酌情替代数据报套接字、IPv6 等。

    所以:

    s.assign(boost::asio::ip::tcp::v4(), socket);
    

    根据您的尝试进行适当调整。

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 2013-11-02
      • 2022-01-20
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2017-02-10
      相关资源
      最近更新 更多