views:

634

answers:

1

I am merely trying to create a boost ip::tcp::socket from an existing native socket. In the assign function, the first parameter must be a "protocol_type" and the second must be a "native_type", but it never explains what these are or gives an example of its use.

I'm guessing the second should be the socket descriptor, but I'd really appreciate clarification.

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  A: 

"Native type" is just the socket handle, in this case the int stored in "socket".

"Protocol type" is the the protocol. For a TCP over standard IP using stream socket, this would be the return value from boost::asio::ip::tcp::v4(). Substitute as appropriate for datagram sockets, IPv6, etc.

So:

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

Adjusted as appropriate for what you're trying to do.

janm