Article View: fr.comp.lang.c
Article #15051Re: probleme avec fflush(stdin)
From: laurence moquet
Date: Sat, 15 Oct 2005 21:00
Date: Sat, 15 Oct 2005 21:00
82 lines
3515 bytes
3515 bytes
Bonsoir,
Je n'ai personnellement pas de solution � votre probl�me.
Par contre, je ne crois pas que sendto envoye un maximum de BUFFERSIZE
caract�res
(http://www.opengroup.org/onlinepubs/009695399/functions/sendto.html) mais
BUFFERSIZE caract�re, donc la derni�re boucle (celle o� vous entrez \n pour
finir la saisie) devrait envoyer des caract�res al�atoires � votre serveur,
si je ne me trompe pas.
Bonne soir�e.
Julien Moquet.
"SoULiaNe" <cubixA@Tcaramail.com> a �crit dans le message de news:
434fb8d3$0$21210$626a54ce@news.free.fr...
> Bonjour,
>
> ci dessous vous trouverez un petit source pour un client UDP. Le client
> enregistre une chaine lue au clavier dans un buffer de taille limit� puis
> il l'envoie � un serveur. Ce que je ne comprend pas, c'est pourquoi les
> chaines de longueur > � BUFFERSIZE sont tout de m�me envoy� au serveur,
> alors que je vide l'entr�e standard avant chaque fgets() � l'aide de
> fflush(stdin).
>
> Voici un exemple d'utilisation du client :
>
> ./clientudp X.X.X.X
> salut
> DEBUG i=0
> ssssssssssssssssssssss
> DEBUG i=1
> DEBUG i=2
> DEBUG i=3
>
> Comme en t�moigne les lignes "DEBUG", la longue chaine de S est envoy� �
> l'aide de 3 sendto(). Voici le code et merci d'avance pour votre aide :)
>
>
>
> #include <sys/socket.h>
> #include <sys/types.h>
> #include <netinet/in.h>
> #include <stdio.h>
>
> #define BUFFERSIZE 10
> #define SERVERPORT 2222
>
> int main(int argc, char **argv) {
>
> int sockfd, i=0;
> struct sockaddr_in server_addr;
> char * server_ip = argv[1];
> char buffer[BUFFERSIZE];
>
> if(argc<2) {
> fprintf(stderr, "Syntaxe: %s server_ip\n", argv[0]);
> return(1);
> }
>
> server_addr.sin_family = AF_INET;
> server_addr.sin_port = htons(SERVERPORT);
> if(inet_aton(server_ip, &(server_addr.sin_addr)) == 0) {
> perror("inet_aton: ");
> return(1);
> }
> memset(&(server_addr.sin_zero),'\0',8);
>
> sockfd = socket(AF_INET, SOCK_DGRAM, 0);
>
> do {
> fflush(stdin);
> fgets(buffer, BUFFERSIZE, stdin);
> printf("DEBUG\ti=%d\n", i++);
> sendto(sockfd,buffer,BUFFERSIZE,0,(struct sockaddr
> *)&server_addr,sizeof(struct sockaddr));
> } while(buffer[0] != '\n');
>
> close(sockfd);
> printf("Au revoir !\n");
> return(0);
>
> }
Technical Details
Message-ID:
<dirque$t0c$1@aphrodite.grec.isp.9tel.net>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!newsread.com!news-xfer.newsread.com!newspeer.monmouth.com!news.tele.dk!news.tele.dk!small.news.tele.dk!news.astraweb.com!newsrouter-eu.astraweb.com!proxad.net!usenet-fr.net!gaoland.net!grec.isp.9tel.net!not-for-mailReferences:
<434fb8d3$0$21210$626a54ce@news.free.fr>Show Full Headers
Complete Article Headers
X-Google-Thread: f9822,a94f0299b34bb7ac X-Google-Attributes: gidf9822,public X-Google-Language: FRENCH,ASCII Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!newsread.com!news-xfer.newsread.com!newspeer.monmouth.com!news.tele.dk!news.tele.dk!small.news.tele.dk!news.astraweb.com!newsrouter-eu.astraweb.com!proxad.net!usenet-fr.net!gaoland.net!grec.isp.9tel.net!not-for-mail From: "laurence moquet" <moquet.laurence@neuf.fr> Newsgroups: fr.comp.lang.c Subject: Re: probleme avec fflush(stdin) Date: Sat, 15 Oct 2005 23:00:29 +0200 Organization: 9Telecom Lines: 84 Message-ID: <dirque$t0c$1@aphrodite.grec.isp.9tel.net> References: <434fb8d3$0$21210$626a54ce@news.free.fr> NNTP-Posting-Host: 160.207.98-84.rev.gaoland.net X-Trace: aphrodite.grec.isp.9tel.net 1129410318 29708 84.98.207.160 (15 Oct 2005 21:05:18 GMT) X-Complaints-To: abuse@9online.fr NNTP-Posting-Date: Sat, 15 Oct 2005 21:05:18 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-RFC2646: Format=Flowed; Response