1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| #include <iostream>
#include <WinSock2.h>
#pragma (lib, "Ws2_32.lib")
using namespace std;
int main(int argc, char *argv[])
{
// Initialisation des DLL pour l'utilisation des sockets
WSADATA data;
if(WSAStartup(MAKEWORD(2,2), &data) == SOCKET_ERROR) // retourne un code d'erreur en cas d'échec et 0 sinon
{
cout << "Erreur d'initialisation de la bibliothèque des Sockets" << endl;
cout << "Code d'erreur : " << WSAGetLastError() << endl;
}
// Création de socket(adresse IP et Port, flux de transfert de donnée via réseau)
SOCKET sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sock == INVALID_SOCKET)
{
cout << "Erreur de création de Socket" << endl;
cout << "Code d'erreur : " << WSAGetLastError() << endl;
}
// Indexation des clients qui peuvent se connecter
sockaddr_in client;
client.sin_addr.s_addr = inet_addr(ADDR_ANY);
client.sin_family = AF_INET;
client.sin_port = htons(61111);
bind(sock,(const sockaddr *)&client,sizeof(client));
listen(sock,0);
cout << "En attente de connection ..." << endl;
// Attente de connection
while(1)
{
int taille = sizeof(client);
if(accept(sock,(sockaddr *)&client,&taille) != INVALID_SOCKET)
{
cout << "Client connecté au port " << client.sin_port << endl;
}
}
// Fermeture/Liberation du socket
if(closesocket(sock) == SOCKET_ERROR)
{
cout << "Erreur de fermeture du Socket" << endl;
cout << "Code d'erreur : " << WSAGetLastError() << endl;
}
if(WSACleanup() == SOCKET_ERROR) // retourne SOCKET_ERROR en cas d'erreur et 0 sinon
{
cout << "Erreur libération de la bibliothèque des Sockets" << endl;
cout << "Code d'erreur : " << WSAGetLastError() << endl;
}
return 0;
} |