🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.lang.c
Article #15051

Re: probleme avec fflush(stdin)

#15051
From: laurence moquet
Date: Sat, 15 Oct 2005 21:00
82 lines
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-mail
References: <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