Para realizar el chat que describes en el ejemplo de chat multisocket que ya he subido al foro en el tema:
Sockets Chat Multisocket:
[Tienes que estar registrado y conectado para ver este vínculo]Realiza parte de lo que quieres lograr.
La única modificación para hacerlo a través de internet en teoría, solo tendrías que tener un servidor con una ip fija y modificar la ip dentro de los programas cliente en la conexión.
El programa chat multisocket también esta diseñado para 200 sockets(maquinas) sin embargo puede ser extendido a más sockets, incluso se podría extender el servidor para tener múltiples servidores, para convertirlo tipo "msn".
También para acercar tu proyecto a un nivel más cercano a nivel msn, tendrías que inventar algún protocolo de conexión entre cliente-servidor.