Я реализую протокол DTLS для CoAP на C, C ++.
Как я вижу, я могу использовать OpenSSL или WolfSSL.
Например WolfSSL:
https://github.com/wolfSSL/wolfssl-examples/blob/master/dtls/client-dtls-nonblocking.c
Но как я могу обнаружить, что какое-то сообщение было отправлено мне?
В неблокирующей операции у вас обычно есть точка в программе, где она ожидает, что любой из неблокирующих файловых дескрипторов сообщит о доступности данных.
В приведенном вами примере это select(...)
линия. На практике у вас либо есть такой централизованный выбор самостоятельно, либо основной цикл запускается другой библиотекой, в которую вы передаете дескрипторы, о готовности которых вы хотите получать уведомления (например, в GTK, которые могут быть g_source_add_unix_fd).
Других решений пока нет …