Question: I'm working on a project where a program running on the mobile phone needs to communicate with a program running on the PC it's connected to. Ideally, I'd like to use USB, WiFi, whatever to communicate.

The two programs should be able to communicate things like battery life, text messages, etc... But I can work on that later, I just need to get them to talk.

What's the best way to do this?

Answer: 
"Best" is really subjective and highly dependent on a lot of factors like devices, topology, firewall presence, need for security, etc, etc. 

Where do you need the comms to originate and will you have an ActiveSync connection? If the PC initiates the comms and you have ActiveSync, then RAPI is the transport you'd use as it's got all of the infrastructure done and ready.

For anything else you're going to need some form of proprietary protocol and transport mechanism. Typically I write a simple socket protocol with a defined message structure (typically a message ID, CRC, message length and data payload). I then have some base message class that handles the comms and a set of derived messages for each specific command I want. For 2-way stuff that requires a response, I typically create a base Response class and then derive specific response formats from it.
WIMO is working on WiFi to desktop support and may be done. Might be worth a look at the code either way.

[home](http://www.wimobot.com/)

[source](http://www.wimobot.com/SourceCode.aspx#WimoII)