10

我只是想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));
}
4

1 回答 1

12

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

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

所以:

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

根据您要执行的操作进行适当调整。

于 2009-11-04T04:46:51.667 回答