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.