I'm not sure about the "correct" way, but here is a little test chat program I wrote that lets multiple clients connect to a phone acting as a server and it seems to work fine.
I based the socket handling on the camera example, however, I did notice that the AsyncStreams Terminated event never seems to fire so I built in a sanity check to watch for disconnected clients.
It's one main service that runs both server and client modes (you decide which to run after starting the service).