如何从本机套接字创建Boost.Asio套接字?

10 c++ networking boost network-programming boost-asio

我只是试图ip::tcp::socket从现有的本机套接字创建一个提升.在assign函数中,第一个参数必须是"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));
}
Run Code Online (Sandbox Code Playgroud)

jan*_*anm 12

"Native type"只是套接字句柄,在这种情况下是存储在"socket"中的int.

"协议类型"是协议.对于使用流套接字的TCP over标准IP,这将是boost :: asio :: ip :: tcp :: v4()的返回值.适当替换数据报套接字,IPv6等.

所以:

s.assign(boost::asio::ip::tcp::v4(), socket);
Run Code Online (Sandbox Code Playgroud)

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