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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| #include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<winsock2.h>
/*********************************/
int erreur=0;
WSAData initialisation;
SOCKET ma_socket;
SOCKET acceptation;
int temp;
SOCKADDR_IN info_client;
char buffer[65000];
int reception;
/********************************/
int main()
{
/*initialisation de winsock*/
erreur = WSAStartup(MAKEWORD(2,0), &initialisation);
if(erreur!=0)
{printf("Erreur lors de l'initialisation de WSAStartup. %d\n", WSAGetLastError());}
else
{printf("WSAStartup : OK\n");}
/*ouverture de la socket*/
ma_socket = socket(AF_INET, SOCK_STREAM, 0);
if(ma_socket!=INVALID_SOCKET)
{printf("Opening socket : OK\n");}
else
{printf("Erreur lors de l'ouverture de la socket. %d\n", WSAGetLastError());}
/*sockoption*/
temp=1;
erreur = setsockopt(ma_socket, IPPROTO_TCP, TCP_NODELAY, (char*)&temp, sizeof(temp));
if(erreur!=0)
{printf("Erreur lors de la definition de l'algorithme de Nagle. %d\n", WSAGetLastError());}
else
{printf("Algorithme de Nagle : OK\n");}
/*ecoute sur une ip et un port*/
info_client.sin_family=AF_INET;
info_client.sin_addr.s_addr=INADDR_ANY; // ecoute sur les IPs locales.
info_client.sin_port=htons(7777);
erreur=bind(ma_socket, (struct sockaddr*)&info_client, sizeof(info_client));
if(erreur!=0)
{printf("Erreur lors de la lise en ecoutes sur l'ip et/ou le port. %d\n", WSAGetLastError());}
else
{printf("IP et port : OK\n");}
/*attente de la connection du client*/
erreur=99;
while(erreur!=0)
{erreur=listen(ma_socket, 1);
printf("Attente de la connection du client.\n");}
/*acceptaion de la demande de connection*/
temp=sizeof(info_client);
acceptation=accept(ma_socket, (struct sockaddr*)&info_client, &temp);
if(acceptation!=INVALID_SOCKET)
{printf("connection du client : OK\n");
/***************************************************************/
memset(buffer, 0, sizeof(buffer));
strcpy(buffer, "\nRFT >"); // l'invite de commande
send(ma_socket, buffer, strlen(buffer), 0);
recv(acceptation, buffer, 1515, 0); // reception de la commande
if(strcpm(buffer, "com1")==0); //comparaison de la commande
{memset(buffer,0,sizeof(buffer));
strcpy(buffer, "\nCommande Correcte.");
send(ma_socket, buffer, sizeof(buffer));}
/***********************************************************/}
else
{printf("Connection invalide. %d\n", WSAGetLastError());}
/*reception des données*/
reception=recv(acceptation, buffer, 1515, 0);
if(reception==SOCKET_ERROR)
{printf("Aucune donnes recue. %d\n", WSAGetLastError());}
else
{buffer[reception]=0;
printf("Le Client dit :\n\t%s", buffer);}
/*Fermeture de la cession TCP*/
erreur=shutdown(acceptation, 2);
if(erreur!=0)
{printf("Erreur lors de la fermeture de la session TCP. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la session TCP : OK\n");}
/*fermeture des 2 sockets*/
erreur=closesocket(acceptation);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket 1. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la socket : OK\n");}
erreur=closesocket(ma_socket);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket 2. %d\n", WSAGetLastError());}
else
{printf("Fermeture de la socket : OK\n");}
/*Fermeture de winsock*/
erreur=WSACleanup();
if(erreur!=0)
{printf("Ereur lors de la fermeture de WinSock. %d\n", WSAGetLastError());}
else
{printf("Fermeture de winsock : OK\n");}
system("PAUSE");
} |
Partager