2009-11-04 16 views
9

Po prostu próbuję utworzyć wzmocnienie ip::tcp::socket z istniejącego gniazda macierzystego. W assign function pierwszy parametr musi być "typem protokołu", a drugi musi być typem "natywnym", ale nigdy nie wyjaśnia, co to jest lub daje przykład jego użycia.Jak utworzyć gniazdo Boost.Asio z natywnego gniazda?

Zgaduję, że drugi powinien być deskryptorem gniazda, ale naprawdę doceniam wyjaśnienie.

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

Odpowiedz

10

"Rodzimy typ" to tylko uchwyt gniazda, w tym przypadku int zapisany w "gnieździe".

"Typ protokołu" jest protokołem. W przypadku TCP za pomocą standardowego adresu IP używającego gniazda strumieniowego, byłaby to wartość zwracana przez funkcję boost :: asio :: ip :: tcp :: v4(). Zastępca jako odpowiednie dla gniazd datagramowych, IPv6, itp

Więc:

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

w odpowiednio dostosowywane do co próbujesz zrobić.

Powiązane problemy