To me, those are fun things to solve.
The answer is to still have clients and servers, just that the servers deal with the grunt work of routing traffic and the clients just stream the data through a server.
Push vs pull, depending if you can get upnp to open a port to the client.
Skype was originally a peer to peer application, seemed pretty popular and while it still was p2p? It was written by the people who wrote Kazaa, remember that?