Bonjour, je développe depuis deux mois une application client/serveur (pour le moment, le serveur ne gère qu'un unique client)

Voilà comment se comporte mon logiciel :

Serveur: L'administrateur du serveur envoi des commandes.
Client: Le client reçoit et traite ces commandes.

Voilà la liste (temporaire) des commandes :

STAT_ON : Indique au client que le serveur est présent
STAT_OFF : Indique au client que le serveur est absent
ACT_IP : Demande au client d'envoyer toutes les infos (via : ipconfig ou iwconfig sur le réseau).
ACT_SEEHD>repertoire : Demande au client d'envoyer sous forme de texte, l'arborescence d'un repertoire
ACT_CLOSE : Ferme la connexion côté serveur et côté client
Voilà un exemple de la commande qui me parait la plus importante :

ACT_SEEHD>repertoire

Serveur:
com:> ACT_SEEHD>/home/samsoft/Programmes/
Client X : C C++ Ariberion
Maintenant passons au code de la boucle de traitement de commandes (partie 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
 
do
{
 
                        sock_err = recv(socketServeur, serveurMessage, (int) sizeof(serveurMessage) - 1, 0);
 
                        if(sock_err != SOCKET_ERROR)
                        {
                                char  *p = NULL, *part2, strDir[] = "dir ";
 
                                serveurMessage[sock_err] = 0;
 
                                p = strtok(serveurMessage, sep);
                                part2 = strtok(NULL, sep);
 
                                fprintf(stdout, "\n\nDonne'e recue avec succes\n\n");
                                fflush(stdout);
 
                                if(strcmp(serveurMessage, "STAT_OFF")==0)
                                {
                                    fprintf(stdout, "Serveur %d : Administrateur absent\n", socketServeur);
                                    fflush(stdout);
                                }
                                else if(strcmp(serveurMessage, "STAT_ON")==0)
                                {
                                    fprintf(stdout, "Serveur %d : Administrateur present\n", socketServeur);
                                    fflush(stdout);
                                }
                                else if(strcmp(serveurMessage, "ACT_SEEHD")==0)
                                {
                                    if(part2 == NULL)
                                    {
                                        fprintf(stdout, "ACT_SEEHD");
                                    }
                                    else
                                    {
                                        fprintf(stdout, "Commande : %s\n", strDir);
 
                                        char saveTo[] = ">hdData.txt";
                                        strcat(strDir, part2);
                                        strcat(strDir, saveTo);
                                        system(strDir);
 
                                        FILE *myFile0 = fopen ("hdData.txt", "r");
 
                                        if (myFile0 != NULL)
                                        {
                                            char line[256];
 
                                            while(fgets(line, sizeof line, myFile0) != NULL)
                                            {
                                                send(socketServeur, line, strlen(line), 0);
                                            }
 
                                            fclose(myFile0);
                                        }
                                        else
                                        {
                                            fprintf(stdout, "Erreur lors de l'ouverture d'un fichier\n");
                                        }
                                    }
                                }
                                else if(strcmp(serveurMessage, "ACT_IP")==0)
                                {
                                    #if defined (WIN32)
                                        system("ipconfig>ipData.txt");
                                    #elif defined (linux)
                                        system("ifconfig>ipData.txt");
                                    #endif
 
                                    FILE *myFile = fopen ("ipData.txt", "r");
 
                                    if (myFile != NULL)
                                    {
                                        char line[256];
 
                                        while(fgets(line, sizeof line, myFile) != NULL)
                                        {
                                            send(socketServeur, line, strlen(line), 0);
                                        }
 
                                        fclose(myFile);
                                    }
                                    else
                                    {
                                            fprintf(stdout, "Erreur lors de l'ouverture d'un fichier\n");
                                    }
 
                                }
                                else if(strcmp(serveurMessage, "ACT_CLOSE")==0)
                                {
 
                                    int rsltOfShutdown = shutdown(socketServeur, 2);
 
                                    if(rsltOfShutdown != SUCCESS)
                                    {
                                        fprintf(stdout, "Erreur lors de la fin de connexion\n");
                                    }
                                    else
                                    {
                                        #if defined (WIN32)
                                            closesocket(socketServeur);
                                        #elif defined (linux)
                                            close(socketServeur);
                                        #endif
 
                                        fprintf(stdout, "Fermeture de la connexion avec le serveur :%d\n", socketServeur);
                                    }
                                    end = 0;
                                }
                                else
                                {
                                    fprintf(stdout, "Serveur %d : %s\n", socketServeur, serveurMessage);
                                    fflush(stdout);
                                }
                        }
                        else
                        {
                            fprintf(stdout, "Erreur lors de la re'ce'ption : ");
                            fprintf(stdout, "sock_err = %d\n\n", sock_err);
                            fflush(stdout);
                            end=0;
                        }
}
while(end!=0);
Je sais comment envoyer et recevoir le contenu d'un fichier mais je ne vois pas du tout comment envoyer et recevoir un fichier.

Merci d'avance