Are there any Mono (C#) compatible networking / socket libraries out there?

Preferably something that is:

  • Multi Threaded
  • Event Driven
  • Capable of multiple connections
  • Handles client and server pieces
  • Runs on Mono and MS .NET runtimes
  • Very simple
  • Free (And usable in commercial software)

It would also be really great if it was:

  • .NET Compact Framework (Windows Mobile) compatible
  • MonoTouch (iPhone) compatible

Edit:

To clarify more, what I meant by my "one level above TCP/IP" comment was that I want something that is basically a self contained server / client. I don't want to have to deal with writing the threading code, handling each connection, etc. For example, I would love for the code to look like this:

Server s = new Server(8080);
s.NewConnection += new ConnectionEventHandler(NewConnection);
s.DataRecieved += new DataEventHandler(NewData);
s.Start();

void NewConnection(object sender, EventArgs e)
{
   s.Send((Connection)sender, "Hello World!"); //(Connection)sender is the connection instance so the server knows which to send the response to
}

void NewData(object sender, EventArgs e)
{
   s.Send((Connection)sender, e.Data); //Echo back
}

Not the cleanest code, but I think it gives the basic idea.

Edit
Report