How to create a Boost.Asio socket from a native socket?

谁说我不能喝 提交于 2019-11-29 08:19:52

问题


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

回答1:


"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.



来源:https://stackoverflow.com/questions/1671586/how-to-create-a-boost-asio-socket-from-a-native-socket

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!