Ou en est le projet ?
Je ne vais pas m'attarder à présenter les différents aspects du moteur réseau, ni comment je vais les gérer, vous le découvrirez au fil du développement lors de la conversion du moteur réseau, bout par bout.
J'ai, à ce jour, presque terminé la gestion des peers (clients) connectés. Le tout est codé, et presque fonctionnel à 100%.
Ma technique est très simple, bien qu'elle m'ait obligée à poser les bases du moteur réseau en lui même. Une liste telle la suivante est tenue à jour sur le serveur:
127.0.0.1:2763
0
127.0.0.2:2764
1
127.0.0.3:2765
2
127.0.0.4:2766
3
127.0.0.5:2767
4
On reconnait dans ce fichier l'adresse ip des clients, le port utilisé, et en dessous l'id du peer.
A chaque connexion d'un peer, une entrée dans le fichier est créée, et un message est envoyé à tout les autres peers déjà enregistrés dans cette liste pour leur dire d'ajouter cette entrée.
Il en est de même à chaque déconnection. Quand un peer se déconnecte, il envoi un message au serveur pour lui dire d'enlever son entrée. Dans le cas ou le peer plante, au bout de 10 secondes où le peer ne répond pas, il le considère comme déconnecté.
On peut ainsi tenir une liste des peers connectés à jour, et constamment pareille, entre les peers et le serveur.
Au niveau code ça donne ca :
- Pour l'ajout d'une entrée côté serveur :
listener=new TcpListener(IPAddress.Any,16840); //On ouvre le socketA noter :
listener.Start(); // On lance l'écoute
Tools.Log("Starting server"); // On affiche dans la console l'état
while(true)
{
Socket socket=listener.AcceptSocket();
Tools.Log("Connexion de "+socket.RemoteEndPoint); // Y'a un client
using (StreamWriter sw = File.AppendText("test.txt")) //On ouvre un fichier texte
{
sw.WriteLine(socket.RemoteEndPoint); // On y écrit son IP
sw.WriteLine(ClientPlayer.Id); //on va à la ligne pour son ID
}
ClientPlayer = new SPlayer();
Je posterai la class Splayer afin que vous compreniez les prochains morceaux de codes, et l'envoi d'information afin de tenir le même fichier texte côté client.

Aucun commentaire:
Enregistrer un commentaire