2009-11-04 10 views
9

Ich versuche nur, einen Boost ip::tcp::socket von einem vorhandenen nativen Socket zu erstellen. In der assign function muss der erste Parameter ein "protocol_type" sein und der zweite muss ein "native_type" sein, aber es erklärt nie, was diese sind oder gibt ein Beispiel seiner Verwendung.Wie erstellt man einen Boost.Asio Socket von einem nativen Socket?

Ich vermute, die zweite sollte der Socket-Deskriptor sein, aber ich würde eine Klarstellung wirklich schätzen.

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

Antwort

10

"Nativer Typ" ist nur der Socket-Handle, in diesem Fall der Int in "Socket" gespeichert.

"Protokolltyp" ist das Protokoll. Für eine TCP-über-Standard-IP, die Stream-Socket verwendet, wäre dies der Rückgabewert von boost :: asio :: ip :: tcp :: v4(). Ersatz als geeignet für Datagramm-Sockets, IPv6, usw.

So:

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

entsprechend angepasst für das, was Sie zu tun versuchen.

Verwandte Themen