WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Serveur de jeux d'échecs

( Télécharger le fichier original )
par Ousman Lewis Soumbougma
Ecole d'Ingénierie Sup'Management - Master 1 ingenierie informatique 2008
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

II. PRINCIPE DE L'ARCHITECTURE CLIENT-SERVEUR

1. Architecture d'un client

L'architecture d'un programme réseau demandant les services d'une application serveur sera la suivante :

ouvrir la connexion avec le service jeu de la machine « serveur »

si réussite alors

tant que ce n'est pas fini

préparer une demande

l'émettre vers la machine « serveur »

attendre et récupérer la réponse

la traiter

fin tant que

finsi

fermer la connexion

2. Architecture d'un serveur

L'architecture d'un programme offrant des services sera la suivante :

ouvrir le service sur la machine locale

tant que le service est ouvert

se mettre à l'écoute des demandes de connexion sur un port dit port d'écoute

lorsqu'il y a une demande, la faire traiter par une autre tâche sur un autre port dit port de service

fin tant que

3. Quelques classes

Le framework .NET offre différentes classes pour travailler avec le réseau :


· la classe Socket est celle qui opère le plus près du réseau. Elle permet de gérer finement la connexion réseau. Le terme socket désigne une prise de courant. Le terme a été étendu pour désigner une prise de réseau logicielle. Dans une communication TCP-IP entre deux machines A et B, ce sont deux sockets qui communiquent entre eux. Une application peut travailler directement avec les sockets. C'est le cas de l'application A ci-dessus. Un socket peut être un socket client ou serveur.

Si on souhaite travailler à un niveau moins fin que celui de la classe Socket, on pourra utiliser les classes :

· TcpClient pour créer un client Tcp,

· TcpListener pour créer un serveur Tcp.

Ces deux classes offrent à l'application qui les utilisent, une vue plus simple de la communication réseau en gérant pour elle les détails techniques de gestion des sockets.

.NET offre des classes spécifiques à certains protocoles :

· La classe SmtpClient pour gérer le protocole SMTP de communication avec un serveur SMTP d'envoi de courriers électroniques

· La classe WebClient pour gérer les protocoles HTTP ou FTP de communication avec un serveur web.

On retiendra que la classe Socket est suffisant en elle-même pour gérer toute communication TCP/IP mais on cherchera avant tout à utiliser les classes de plus haut niveau afin de faciliter l'écriture de l'application TCP/IP.

a. La classe TcpClient

La classe TcpClient est la classe qui convient dans la plupart des cas pour créer le client d'un service TCP. Elle a parmi ses constructeurs C, méthodes M et propriétés P, les suivants :

TcpClient(string hostname, int port) => C : crée une liaison tcp avec le service opérant sur le port indiqué (port) de la machine indiquée (hostname). Par exemple new TcpClient("istia.univ-angers.fr",80) pour se connecter au port 80 de la machine istia.univ-angers.fr

Socket Client => P : le socket utilisé par le client pour communiquer avec le serveur.

NetworkStream GetStream() => M : obtient un flux de lecture et d'écriture vers le serveur. C'est ce flux qui permet les échanges client-serveur.

void Close() => M : ferme la connexion. Le socket et le flux NetworkStream sont également fermés.

bool Connected() => P : vrai si la connexion a été établie.

b. La classe NetworkStream

La classe NetworkStream représente le flux réseau entre le client et le serveur. Elle est dérivée de la classe Stream. Beaucoup d'applications client-serveur échangent des lignes de texte terminées par les caractères de fin de ligne "\r\n". Aussi est-il intéressant d'utiliser des objets StreamReader et StreamWriter pour lire et écrire ces lignes dans le flux réseau.

c. La classe TcpListener

La classe TcpListener est la classe qui convient dans la plupart des cas pour créer un service TCP. Elle a parmi ses constructeurs C, méthodes M et propriétés P, les suivants :

· TcpListener (int port) => C : crée un service TCP qui va attendre (listen) les demandes des clients sur un port passé en paramètre (port) appelé port d'écoute. Si la machine est connectée à plusieurs réseaux IP, le service écoute sur chacun des réseaux.

· TcpListener (IPAddress ip, int port) => C : idem mais l'écoute n'a lieu que sur l'adresse ip précisée.

· void Start() => M : lance l'écoute des demandes clients

· TcpClient AcceptTcpClient() => M : accepte la demande d'un client. Ouvre alors une nouvelle connexion avec celui-ci, appelée connexion de service. Le port utilisé côté serveur est aléatoire et choisi par le système. On l'appelle le port de service. AcceptTcpClient rend comme résultat l'objet TcpClient associé côté serveur à la connexion de service.

· void Stop() => M arrête d'écouter les demandes clients

· Socket Server => P le socket d'écoute du serveur.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Il y a des temps ou l'on doit dispenser son mépris qu'avec économie à cause du grand nombre de nécessiteux"   Chateaubriand