- Compagnie ~ Produits ~ Boutique ~ Communauté

Tutoriel


Chapitre 1 - Avant de commencer


Qu'est-ce qu'un socket ?


Un socket n'est ni plus ni moins qu'une interface reliant une application d'un certain PC vers une autre application d'un autre PC au travers d'un réseau. Cette interface permet d'envoyer et de recevoir des données et spécifie également le protocole à utiliser pour réaliser ces échanges. Les protocoles peuvent être divers, tout comme le type de réseau sur lequel ils s'appliquent. Toutefois, ces protocoles sont standardisés et sont intégrés au sein des systèmes d'exploitation. Comme déjà mentionné, nous utiliserons ici le protocole TCP/IP dont nous allons détailler un peu les caractéristiques.

Qu'est-ce que le protocole TCP/IP ?


Le terme "IP" spécifie la façon dont deux ordinateurs faisant partie d'un même réseau (lui-même composés de plusieurs sous réseaux hétérogènes) vont pouvoir s'échanger des données. Cette partie du protocole s'occupe donc du routage, c'est a dire de l'algorithme qui va permettre de déterminer un chemin (une suite de machines) par lequel vont transiter les données pour aller d'un ordinateur A à un ordinateur B. Chaque machine sur le réseau est identifiée de manière unique par une adresse IP (exemple : 192.168.0.15).

Le terme "TCP" va souvent de pair avec "IP". Ce protocole spécifie comment deux machines vont pouvoir s'échanger de façon fiable (c'est à dire sans perte ni mélange de données) des informations au travers d'un réseau qui ne l'est pas. Cette notion de fiabilité est importante, car la partie "IP" du protocole ne se soucie absolument pas de savoir si un paquet expédié arrive bien à destination, ni si plusieurs paquets d'un même message qui a été tronçonné vont arriver dans le même ordre que celui dans lequel ils ont été émis.

Qu'est-ce qu'un numéro de port


Un ordinateur peut exécuter plusieurs applications en parallèle et chacune d'elle peut légitimement avoir besoin d'échanger des données sur un réseau. Un numéro de port sert donc à différencier plusieurs voies de communication aboutissant à une même machine afin que les différentes applications qui s'y exécutent ne mélangent pas leurs données les unes avec les autres. Aussi, quand vous devez vous connecter à un autre ordinateur, vous ne devez pas seulement connaître l'adresse de la machine que vous voulez atteindre, mais aussi le numéro de port de l'application cible. Certains numéros de port sont réservés pour certains types d'applications (Serveur FTP : 21, Serveur HTTP : 80, etc.). Les autres peuvent être utilisés à la convenance de l'utilisateur.

Initialisation des sockets dans votre application


  • La première chose à faire pour utiliser les fonctions sur les sockets et d'inclure les fichiers d'en-têtes dans lesquelles ces fonctions sont déclarées.

  • Sous Windows :
    Les fonctions sont déclarées dans le fichier d'en-tête "Winsock2.h".

    Sous Linux :
    Les fichiers d'en-tête suivants sont nécessaires pour utiliser les sockets sous Linux:
    "sys/socket.h", "sys/types.h", "netinet/in.h", "arpa/inet.h", "unistd.h", "fcntl.h", "netdb.h"


  • Il est ensuite nécessaire d'inclure le code de ces fonctions lors de la compilation de votre projet.

  • Sous Windows (Visual Studio) : Il faut ajouter la librairie suivante à votre projet : ws2_32.lib ; ce qui peut être fait (entre autres) en incluant la directive de compilation suivante au début du code :

    
    #pragma comment(lib, "ws2_32.lib")


    Sous Linux : aucune librairie particulière ne doit être liée.


  • Enfin, la dernière étape consiste à initialiser la librairie de socket. Cette opération est seulement nécessaire sous Windows et consiste en fait a spécifier la version de la librairie avec laquelle on désire travailler. Dans notre cas nous prenons la dernière en date (2.0).

  • 
    WSADATA WSAData;
    WSAStartup(MAKEWORD(2,0), &WSAData);


    L'appel de cette fonction est indispensable pour que la librairie puisse fonctionner. De la même façon, n'oubliez pas de libérer les ressources utilisées par la librairie quand vous terminez votre application :

    
    WSACleanup ();




    Chapitres : Intro 01 02 03

    Dernière mis à jour : 05/2008
       

    Copyright (C) 2010 Quantic-Storm, tous droits réservés