Почему у socket_base нет метода send()? В принципе, я хотел бы использовать сокеты boost :: asio, такие как дескрипторы сокета linux: независимо от того, является ли базовый сокет UDP или TCP, вы можете вызывать функции read(), write(), sendto() и т. Д. ... на них.Отправить данные с boost :: asio :: socket_base
Есть ли более правильное решение, чем просто написать класс оболочки вокруг asio udp & tcp socket classes?
Да, но я хотел бы абстрагировать тип сокета, так что мне не нужно писать два набора функций (один для сокетов UDP и один для TCP). Например, в linux я могу отправить send (socket_descriptor, buf, len, flags), и он будет работать как для UDP, так и для TCP. – user465189
Boost.ASIO не использует виртуальные функции таким образом, поэтому вам нужно будет использовать шаблоны, чтобы иметь возможность писать функцию, которая принимает любой тип сокета в качестве параметра –