Includes et librairies

 

Include nécessaire

Pour pouvoir utiliser les sockets, il est nécessaire de déclarer l'include suivant sous unix/linux <sys/socket.h>.

D'autres include pourront être nécessaire:

#include <netinet/in.h>
#include <arpa/inet.h>

Pour Microsoft, c'est plus simple, il suffira de déclarer <winsock2.h>. Il existe encore la première version <winsock.h>

Pour développer un code compatible sur les plate-formes unix et Windows, vous pouvez utiliser la variable prépro. WIN32 de la manière suivante:

Les librairies sous Windows

Il sera nécessaire d'indiquer les dll pour gérer les sockets sous Windows.

Dans Dev-C++, après avoir créé votre projet, vous indiquerez sous projet\options du projet, dans l'onglet paramètres dans la section éditeur de liens la librairie lib\libwsock32.a (si vous avez déclaré l'include winsock.h - version 1) ou lib\libws2_32.a (si vous avez déclaré l'include winsock2.h - version 2) (que vous trouverez dans le répertoire d'installation de Dev-C++).

Sous Microsoft Windows version 6, votre projet étant créé, vous indiquez sous le menu "project\settings..." et dans l'onglet link la librairie wsock32.lib (si vous avez déclaré l'include winsock.h - version 1) ou ws2_32.lib (si vous avez déclaré l'include winsock2.h - version 2) dans la ligne object/librairy modules.

De plus, il vous faudra utiliser deux fonctions dans votre code qui sont spécifiques à Windows. Ces fonctions serviront en fait à initialiser et à libérer la DLL de gestion des sockets.

 

Ces fonctions sont:

WSAStartup() et WSACleanup()

WSAStartup() attend deux paramètres:

WSVersion de type word, indique la version du socket si vous utilisez winsock.h se sera la version 1, si vous utilisez winsock2.h, ce sera....la version 2 !

Le deuxième paramètre sera l'adresse d'une variable de type WSADATA.

 

Bien entendu vous n'utiliserez pas WSACleanup tant que votre programme n'en a pas fini avec son socket, sinon, vous devrez refaire WSAStartup !!!

Si vous voulez que votre code fonctionne à la fois sous Linux et Windows, il faudra là aussi utiliser la constante WIN32 pour que ces deux fonctions ne soient lancées que si le code tourne sous Windows.

 

Exemple de code:

Il ne vous restera plus qu'à appeler initLibSocket au début de votre code et endLibSocket avant de sortir...