The last post from Endolf on this thread was 2004 - ND Net hasn't been updated for the longest time - we've both moved away from it. I wouldn't suggest getting dependent on it.
Sure. But, I hope you won't mind if I use and modify your code....?
My API is also based around Message objects, but removes the need for encoding and decoding utilizing dynamic introspection and creation. It's definitely higher level than this though.
The API is extremely low-level, and that's what's appealing. It doesn't really try do anything more than send a byte array and recieve the byte array as a whole on the other side. (I've slimmed the NewDawn code even further into 2 classes that just deal with byte arrays)
To do anything more than that then JGN or another network library would be great, but for 'roll-your-own' solutions (like my SS streams I suppose) then byte array send/recieve is all you want.