Lidgren Networking
Homepage: LidgrenHome
Lidgren Network is quite easy to use networking library. It can be used for anykind of software.
I started to work with this library about month ago. Before that, i had never ever done anything that relates to networking.
Setting up chat server was quite easy. After that, i started to think about game server architechture, handling of multiple different kinds of packets, worldState handling, client updating, bandwidth usage.. To be honest, its big task, to build working multiplayer game server and client. You have to handle ever growing amount of different kind of packets. Keep updating clients, with data they need etc. It took me a while to understand all this.
I thought first, that internet must be full of example code, but no.. it's not. Atleast i did not find any. Or if i did, it was so professional code, that i could not even read it.
Things are about to change :)
I created small console based "game", that works over internet, but you can test it on your localhost. When it ask's for IP, just type "localhost". It's very simple example and i tryed to comment it, but feel free to ask help, if something is confusing.
This example covers the very basics of game networking. Message handling, movement, server world state handling etc. Hope you learn something from it.
Here it is: Game Network Example