ENet for C#
As the name suggests, ENet for C# wraps the C-language
ENet networking library. For games
and other real-time applications, if you use TCP, old data can hold up
newer data, even if it is no longer relevant (old positions, etc.).
Your players will perceive any lost packet as a "lag burst".
Why not choose something more appropriate to the task?
ENet supports multiple in-order streams of data, and allows you to
decide on reliability on a per-packet basis. The library is useful for
both client-server and peer-to-peer architectures. Give it a try.
ENet for C# uses the ISC license.
188.8.131.52 (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.
184.108.40.206 (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 on Packet. Mainly this is useful for the indexer.
220.127.116.11 (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.
1.3.3 (May 14, 2012):
Updated the binding to support ENet 1.3.3.
Replaced the Address struct with native .NET IPEndPoint.
Documented most methods.
1.3.1 (February 20, 2011):
Initial release, supporting ENet 1.3.1.