Bonjour à tous,

J'essaye à partir de ce code de recevoir les données du client (du texte), et ensuite les stocker dans un fichier.

Comment savoir que l'envoie du fichier est terminé (pour ensuite sauvegarder le fichier) ?
Alors... Est-ce qu'il faut envoyer depuis le client "-1", une fois que le fichier est terminé ? Et remplacer "for( ;; )" par "while(mess_recu!="-1")".

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
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <netinet/in.h>
 
int main(int argc, char *argv[])
{
 
 /*Informations sur le serveur*/
 char hostname[1024];
 hostname[1023] = '\0';
 gethostname(hostname, 1023);
 printf("------------------------Information sur le serveur----------------------------\nhostname : %s\nport : %s\n",hostname,argv[1]);
 /*Fin informations sur le serveur*/
 
  char mess_recu[BUFSIZ],mess_envoi[BUFSIZ];
  char* contenu_fich;
  int  pp,d_sock,cc,l;
  int longe,service,childpid;
  char tab[128];
 
  struct sockaddr_in serveur = {AF_INET};
  struct sockaddr_in client;
 
  serveur.sin_port=2010; /* numero de port */
  serveur.sin_family=AF_INET;
  serveur.sin_addr.s_addr=INADDR_ANY;
  d_sock=socket(AF_INET,SOCK_STREAM,0); /* procole TCP */
 
  pp=bind(d_sock,(struct sockaddr*)&serveur,sizeof(serveur));
 
  //Boucle pour attendre les données du client
  for (;;){
	  l=listen(d_sock,1);
	  longe=sizeof(struct sockaddr_in);
	  service=accept(d_sock,(struct sockaddr *)&client,&longe);
	  printf("accept= %d\n",service);
 
	  /* reception du message */
	  read(service,mess_recu,sizeof(mess_recu));
	  strcat(contenu_fich,mess_recu);
  }
  close(d_sock);
}
Merci d'avance pour votre aide, je suis sûr qu'il existe des sources donnant ce résultat mais j'ai rien trouvé.

shepounet