2009-11-04 13 views
9

Estoy simplemente tratando de crear un impulso ip::tcp::socket desde un socket nativo existente. En el assign function, el primer parámetro debe ser "protocol_type" y el segundo debe ser "native_type", pero nunca explica cuáles son o da un ejemplo de su uso.¿Cómo crear un socket Boost.Asio desde un socket nativo?

Supongo que el segundo debería ser el descriptor de socket, pero realmente agradecería una aclaración.

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)); 
} 

Respuesta

10

"Tipo nativo" es solo el manejador de socket, en este caso el int almacenado en "socket".

"Tipo de protocolo" es el protocolo. Para un TCP sobre IP estándar que usa el socket de flujo, este sería el valor de retorno de boost :: asio :: ip :: tcp :: v4(). Sustituto según sea apropiado para los conectores de datagramas, IPv6, etc.

Así:

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

ajusten adecuadamente para lo que estamos tratando de hacer.

Cuestiones relacionadas