Quels systèmes d'exploitation envisagez-vous pour cela ?
Si vous utilisez un système d'exploitation Windows et une version ultérieure à Vista, vous ne devriez pas avoir de problème avec plusieurs milliers de connexions sur une seule machine. J'ai effectué des tests (ici : http://www.lenholgate.com/blog/2005/11/Windows-tcpip-server-performance.html ) avec une machine Windows Server 2003 de faible puissance et a facilement atteint plus de 70 000 connexions TCP actives. Certaines des limites de ressources qui affectent le nombre de connexions possibles ont été considérablement levées sur Vista (voir ici : http://www.lenholgate.com/blog/2005/11/Windows-tcpip-server-performance.html ) et vous pourriez donc probablement atteindre votre objectif avec un petit groupe de machines. Je ne sais pas ce dont vous auriez besoin en amont de celles-ci pour acheminer les connexions.
Windows fournit une fonction appelée Ports de complétion d'E/S (voir : http://msdn.microsoft.com/en-us/magazine/cc302334.aspx ) qui vous permettent de servir plusieurs milliers de connexions simultanées avec très peu de threads (j'ai fait des tests hier avec 5000 connexions saturant un lien vers un serveur avec 2 threads pour traiter les E/S...). L'architecture de base est donc très évolutive.
Si vous voulez faire des tests, j'ai quelques outils disponibles gratuitement sur mon blog qui vous permettent d'écraser un simple serveur d'écho en utilisant plusieurs milliers de connexions ( 1 ) et ( 2 ) et un code gratuit que vous pouvez utiliser pour commencer ( 3 )
La deuxième partie de votre question, d'après vos commentaires, est plus délicate. Si l'adresse IP du client change constamment et qu'il n'y a rien entre vous et lui qui fournisse une NAT pour vous donner une adresse IP cohérente, alors leurs connexions seront sans doute interrompues et devront être rétablies. Si les clients détectent cette rupture de connexion lorsque leur adresse IP change, ils peuvent se reconnecter au serveur. S'ils ne le peuvent pas, je suggère que les clients interrogent le serveur de temps en temps afin de détecter la perte de connexion et de se reconnecter. Le serveur ne peut rien faire ici car il ne peut pas prédire la nouvelle adresse IP et il découvrira que l'ancienne connexion a échoué lorsqu'il essaiera d'envoyer des données.
Et n'oubliez pas que vos problèmes ne font que commencer une fois que votre système est passé à ce niveau...