http://enet.bespin.org/ is C. But, it implements reliable|unreliable packet-based messages over UDP. You can have multiple "channels" active in a single connection. Each channel can independently pick a mode. Packet retries in a reliable channel do not delay packets in another channel.