Обновление: мой ответ кажется не более актуальным, но первоначальный вопрос касался UDT, который является протоколом, ориентированным на соединение, построенным поверх UDP.Более подробная информация здесь: http://en.wikipedia.org/wiki/UDP-based_Data_Transfer_Protocol
UDT, по-видимому, предоставляет API, имитирующий классический API сокетов BSD, поэтому его можно использовать в качестве замены для приложений, ориентированных как на поток, так и на дейтаграммы.Проверьте, например, sendmsg
и recvmsg
- оба выдают исключение, если используются в сокете, созданном с SOCK_STREAM
, и все потоковые API выдают исключение для сокета, созданного также с SOCK_DGRAM
.
В случае SOCK_DGRAM
он выполняет некоторую дополнительную обработку, однако в этом случае он не просто прозрачно оборачивает сокет UDP - насколько я понимаю код после быстрого просмотра (я не знаком с внутренними компонентами UDT или спецификацией протокола).).Чтение технических документов может очень помочь.
Библиотека всегда создает свой базовый, "реальный" сокет как датаграмму (проверьте channel.cpp, CChannel::open
).