ENet for C# wraps the C-language ENet networking library. For games and other realtime 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". 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.