Вопрос

Я просто пытаюсь создать импульс 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);

Скорректировано в соответствии с тем, что вы пытаетесь сделать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top