Как создать Boost.Сокет Asio из собственного сокета?
-
13-09-2019 - |
Вопрос
Я просто пытаюсь создать импульс ip::tcp::socket
из существующего собственного сокета.В назначить функцию, первый параметр должен быть "protocol_type", а второй должен быть "native_type", но он никогда не объясняет, что это такое, и не приводит пример его использования.
Я предполагаю, что вторым должен быть дескриптор сокета, но я был бы очень признателен за разъяснения.
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));
}
Решение
"Собственный тип" - это просто дескриптор сокета, в данном случае int, хранящийся в "socket".
"Тип протокола" - это протокол the.Для TCP по стандартному IP, использующему stream socket, это будет возвращаемое значение из boost::asio::ip::tcp::v4().Замените соответствующим образом сокеты дейтаграмм, IPv6 и т.д.
Итак:
s.assign(boost::asio::ip::tcp::v4(), socket);
Скорректировано в соответствии с тем, что вы пытаетесь сделать.