salut.
je voudrai faire un programme Client serveur. L'etablissement de la connection se passe sans problème, mais je n'ai pas su dire au programme comment recevoir l'invite de commande, demander la commande à l'utilisateur, faire la comparaison pour savoir si elle existe, executer les commandes correspondantes, puis retourner un tesultat.
Ces opérations eux mêmes, ne sont pas difficiles à ecrire, mais il parais que je devrai les faire en boucle, pour que le programme marche bien... justement je n'ai pas su le faire

voici un essai :
Le serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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");
 
}
Le client
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include<winsock2.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
/*Le client*/
 
int erreur=0;
WSAData initialisation;
SOCKET ma_socket;
int temp;
SOCKADDR_IN info_serveur;
char buffer[65000];
int envoi;
 
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");}
 
/*Ouverture de la session TCP*/
info_serveur.sin_family=AF_INET;
info_serveur.sin_addr.s_addr=inet_addr("127.0.0.1");
info_serveur.sin_port=htons(7777);
 
erreur=connect(ma_socket, (struct sockaddr*)&info_serveur, sizeof(info_serveur));
if(erreur!=0)
{printf("Erreur lors de l'ouverture de la session TCP. %d\n", WSAGetLastError());}
else
{printf("Remote Victim Fucked ...\n");
 
 
 
/***********reception de l'invite*************************/
acceptation=accept(ma_socket, (struct sockaddr*)&info_serveur, sizeof(info_client));
recv(acceptation, buffer, 1515, 0);
/********************/
printf("\n%s ", buffer);
memset(buffer, 0, sizeof(buffer));
char commande[50]
scanf("%s", &commande);
/********************evois de la commande*********/
strcpy(buffer, commande);
envoi=send(ma_socket, buffer, strlen(buffer), 0);
memset(buffer, 0, sizeof(buffer));
/**********************************************************/
}
 
 
 
 
    /*fermeture de la cession TCP*/
erreur=shutdown(ma_socket, 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 de la socket*/
erreur=closesocket(ma_socket);
if(erreur!=0)
{printf("Erreur lors de le fermeture de la socket. %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");
 
}
Merci de votre aide