Dans le cadre d'une application client/serveur, j'aimerais que ce qu'écris le serveur soit transmis au client. Seulement, il n'y a que le premier caractère qui est trasmis (j'ai essayé avec scanf et fget)
qqun aurait une idée ?
Version imprimable
Dans le cadre d'une application client/serveur, j'aimerais que ce qu'écris le serveur soit transmis au client. Seulement, il n'y a que le premier caractère qui est trasmis (j'ai essayé avec scanf et fget)
qqun aurait une idée ?
montre la partie du code incriminée car c'est un peu obscur la ;S
voici un extrait du code du serveur :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 while(1) { sin_size = sizeof(struct sockaddr_in); if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr,&sin_size)) == -1) { perror("accept"); continue; } printf("serveur: Reçu connection de %s\n", inet_ntoa(their_addr.sin_addr)); pid = fork(); if (pid==0) /* processus fils */ { printf("Saisie du message\n"); scanf("%s",toto); int len, bytes_sent; len = strlen(toto); bytes_sent = send(new_fd, toto, len, 0); } exit(0); }
et un extrait du code du client :
Code:
1
2
3
4
5
6
7
8
9 if ((numbytes=recv(sockfd, buf, sizeof(buf), 0)) == -1) { perror("erreu recv"); exit(1); } buf[numbytes] = '\0'; printf("Reçu: %s",buf);
Voilà, merci pour votre aide !
Que vaut 'bytes_sent' ?Citation:
Envoyé par coco21
Comment est défini buf ?Citation:
et un extrait du code du client :
Code:
1
2
3
4
5
6
7
8
9 if ((numbytes=recv(sockfd, buf, sizeof(buf), 0)) == -1) { perror("erreu recv"); exit(1); } buf[numbytes] = '\0'; printf("Reçu: %s",buf);
Si c'est un tableau de char on devrait écrire :
Tout cela est expliqué ici...Code:
1
2
3
4
5
6
7 numbytes = recv (sockfd, buf, sizeof buf - 1, 0) if (numbytes > 1) { buf[numbytes] = '\0'; printf("Reçu: %s",buf); }
http://emmanuel-delahaye.developpez....eaux.htm#texte