• [^] # Re: systeme decentralisé

    Posté par (courriel, site web personnel) . En réponse au message Trouver des serveurs. Évalué à 2.

    Je pense que si tu fais ça comme ça il y a un risque que les IP des serveurs qui n'existent plus ne soient jamais effacés, ou que ça prenne beaucoup de temps pour que ça soit le cas. Il faudrait aussi que les serveurs (et les clients) vérifient chacunes des nouvelles adresses qu'ils reçoivent, ce qui peut prendre relativement beaucoup de temps, surtout si la liste est "bien" faite (longue et avec des IP qui ne vont pas répondre et donc besoin d'attendre le timeout à chaque fois par exemple). Tu peux évidemment ne vérifier que quelques adresses de manière aléatoire ou refuser de télécharger plus de X adresses à la fois mais alors ta liste est moins rapidement à jours.

    Pour l'idée du serial comme pour les DNS, ça impliquerait qu'il y ai un serveur maitre unique pour qu'on ne se retrouve pas avec le même serial pour deux listes différentes. Pas vraiment une bonne idée à mon avis.

    Quand j'y pense je me dis qu'un réseau IRC c'est encore la moins mauvaise solution si tu veux une liste fiable et à jour:
    Le client télécharge une liste de meta serveurs IRC (ça peut se faire en une seule requète DNS) et se connecte à l'un d'eux aléatoirement puis rejoint un chan prédéfini. Un bot lui donne la liste des serveurs de jeux connus à son arrivée sur le chan. Quand un client se connecte à un serveur, il quitte le chan (et éventuellement le serveur). Quand un serveur est crée, il se connecte aussi au réseau IRC, rejoint un autre chan et signale aux bots des meta serveurs qu'il est un serveur. Un des meta serveurs vérifie qu'il y a bien un serveur à son adresse. Si c'est pas le cas, il kick le serveur du réseau. Si c'est le cas, il l'annonce sur le chan des joueurs, tout le monde met sa liste à jour et le serveur rejoint le chan des joueurs. Quand un serveur se déconnecte, tout le monde le retire de sa liste. Si un client n'arrive pas à se connecter à un des serveurs, il l'annonce sur un troisième chan et si ça n'a pas été fait depuis X secondes, un des bots vérifie l'état du serveur (réponse au client uniquement si le serveur existe, kick du serveur sinon).

    Je crois que c'est la meilleure manière d'avoir une liste fiable vraiment à jours en consommant un minimum de bande passante pour tout le monde sans s'amuser à réecrire un protocole complet (je veux dire en utilisant directement TCP ou UDP). Enfin je ne connais pas vraiment le protocol IRC non plus donc il y a peut-être quelque chose qui m'échappe qui rende mon idée totalement inefficace.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.