ENet supports multiple in-order streams of data over UDP, and allows you to decide on reliability on a per-packet basis. Both client-server and peer-to-peer architectures are supported.
ENet for C# wraps the C-language ENet networking library. 32- and 64-bit Windows and MacOS DLLs are included. On Linux, install the libenet1a package (1.3.3 or newer).
126.96.36.199 (April 24, 2013):
MacOS support! A universal binary, libenet.dylib, is included.
Linux support! Specifically...
libenet.so.1 (package libenet1a) is now searched for, in addition to the Windows DLLs.
The earlier ENet 1.3.3 should work with this version, except for Peer's SetPingInterval and SetTimeouts methods.
Implemented a workaround to ENet 1.3.6 EINTR (Unix signals) behavior.
Implemented a workaround to Mono P/Invoke bug 11899.
Special thanks to Random for testing this for me.
188.8.131.52 (February 27, 2013):
Added Packet.Freed event.
Added Packet.GetUserData/SetUserData methods.
Added another Packet.Initialize overload.
Added Packet.ReferenceCount property.
Added Peer.Host property.
Implemented IList<byte> on Packet. Mainly this is useful for the indexer.
184.108.40.206 February 24, 2013:
It is no longer necessary to call Library.Initialize.
1.3.6 February 23, 2013:
Updated the binding to support ENet 1.3.6.
Added SetPingInterval and SetTimeouts methods to Peer.
Added locking around Library.Initialize/Deinitialize.
Miscellaneous minor improvements.
This package has no dependencies.