Nothing too fancy, but the following would be nice for .NET:
- Be able to instantiate the object and hook up the MessageReceived and ConnectionChanged events (or ones with similar purposes).
- Be able to send data (duh)
- When data is received, it fires the MessageReceived event on the same thread that the object was created on (this would be nice, but not absolutely required).
- Have a blocking and non-blocking options for connecting and possibly sending data.
- Free and open source - nice to have.