1 Réseaux Communication socket sous Windows
2 Communication socket sous Windows Communication entre 2 applications sur 2 machines distantes Adresse IP + N° port Socket passive Processus serveurProcessus client Adresse IP + N° port Socket active + Socket passive Réseau Ethernet Application 1Application 2 Transfert de données consommées par les applications
3 Communication socket sous Windows place du socket dans le modèle OSI Couche Application 7 Couche Présentation 6 Couche Session 5 Couche Transport 4 Couche Réseau 3 Couche Liaison 2 Couche Physique 1 Couche OSI Serveur Windows 95 TCP IP Ethernet 10 base 100 Windows 95 TCP IP Ethernet 10 base 100 Client Réseau local Ethernet SOCKET
4 Communication socket standard Synoptique de la communication des fonctions API socket Client Serveur Socket() Bind() Recv() Connect() Accept() Listen() Socket() Send() Recv() Close() Send() Close() Attente Passive d'une connexion Connexion établie Traite() Socket Passive Socket Active Attachement IP + N° port
5 Communication socket sous Windows Primitives z3 types de primitives yServeur yclient yClient et serveur
6 Communication socket sous Windows Primitives serveur zint bind (SOCKET s, const struct sockaddr FAR* name, int namelen ); zint listen (SOCKET s, int backlog ); zSOCKET accept (SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen );
7 Communication socket sous Windows Primitives client zint connect (SOCKET s, const struct sockaddr FAR* name, int namelen );
8 Communication socket sous Windows Primitives client et serveur zint socket (int domain, int type, int protocole); zint ioctlsocket (SOCKET s, long cmd, u_long FAR* argp ); zint close (SOCKET s);
9 Communication socket sous Windows Primitives client et serveur zint recv (SOCKET s, char FAR* buf, int len, int flags. ); zint send (SOCKET s, const char FAR * buf, int len, int flags );
10 Communication socket sous Windows Primitives client et serveur //Initialisation de l'utilisation de la DLL windows pour les Sockets //détermine la version supportée par le système d'exploitation. //Cela permet à une DLL socket windows et à l'application développée d'être //compatible. On compare les résultats contenus dans wsaData (wVersion et //wHighVersion et on vérifie la compatibilité avec wVersionRequested //Déclaration des données pour WSAStartup WORD wVersionRequested; WSADATA wsaData; // Fixe la version de la DLL socket pour l'application à 2; wVersionRequested = MAKEWORD(1,0); // ou wVersionRequested=MAKEWORD( 2, 0 ); Fermeture DLL //Fin d'utilisation de la DLL WSACleanup()
11 Communication socket sous Windows Primitives client et serveur // Traitement des erreurs pour API Windows err = WSAStartup( wVersionRequested, &wsaData ); if (err != 0 ) {//Traitement de l'erreur switch (err) { case WSASYSNOTREADY : strcpy(MesErr,"Le réseau n'est pas prêt \ pour la communication.");break; case WSAVERNOTSUPPORTED: strcpy(MesErr,"Version non \ compatible.");break; case WSAEINPROGRESS: strcpy(MesErr,"Socket windows bloquante de version 1.1 en cours."); break; case WSAEPROCLIM : strcpy(MesErr,"Limitation des tâches \ supportée par windows.");break; case WSAEFAULT : strcpy(MesErr,"IpWSAData n'est pas un pointeur valide.");break; } if ( Application->MessageBox(MesErr,"Serveur : Erreur WSAStartup \ init et compatibilté DLL socket", MB_OK) != IDOK) Application->Terminated; } // fin si
12 Communication socket sous Windows Primitives client et serveur // création d'un numéro de descripteur de socket //la fonction socket retourne un type SOCKET SOCKET sock; SOCKET sock_current; //déclaration du domaine de la socket Internet AF_INET. // Les deux types de déclarations sont équivalents SOCKADDR_IN sin; struct sockaddr_in pin; u_short port;// numéro de port affecté à la Socket const char FAR *AdIPDist;// adresse IP de la machine distante à //contacter
13 Communication socket sous Windows Primitives client et serveur zHtonl(x) : entier long, network long représentation hôte représentation réseau zHtons(x) : entier court, network short représentation hôte représentation réseau zHtohl(x) : entier long, host long représentation réseau représentation hôte zHtohs(x) : entier court, host short représentation réseau représentation hôte