 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Stanislas Guest
|
Posted: Mon Mar 28, 2005 10:09 pm Post subject: impossible de lire 0 depuis le réseau |
|
|
j'ai un client qui envoie un byte = 0.
lorsque mon serveur reçois ça il s'arrête tout simplement
pourriez vous m'aider : voici le code
:--------------main function ----------------------:
| Quote: |
ofstream * writepersist = new ofstream
((userpath+newid).c_str(),ios::out|ios::app|ios::binary);
int size = 0;
char c;
while((int)(c=getchar(s))!=0)
{
writepersist->put(c);
size++;
}
:----------------getchar implementation--------------:
char netaction::getchar(int s)
{
char c;
int error=0;
int err;
while(1)
{
getsockopt(s,SOL_SOCKET,SO_ERROR,(char*)&err,(unsigned
int*)sizeof(err));
if(read(s,&c,1)==1) break;
if(errno!=0) {error = 1; break; }
}
if(error==1)
{
shutdown(s,2);
close(s);
exit(0);
}
return c;
}
:--------------------------:
|
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Tue Mar 29, 2005 6:49 am Post subject: Re: impossible de lire 0 depuis le réseau |
|
|
Stanislas wrote:
| Quote: | j'ai un client qui envoie un byte = 0.
lorsque mon serveur reçois ça il s'arrête tout simplement
pourriez vous m'aider : voici le code
:--------------main function ----------------------:
int size = 0;
char c;
while((int)(c=getchar(s))!=0)
^^^^^^^^^^^^^^^^^^^^^^ |
C'est normal, non ?
Le getchar du système renvoie un int, afin justement d'avoir une
valeur hors bande pour signaler la fin. Je ne sais pas ce que tu
essaies de faire, mais ça pourrait être une solution possible.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
Stanislas Guest
|
Posted: Tue Mar 29, 2005 11:22 am Post subject: Re: impossible de lire 0 depuis le réseau |
|
|
Il ne faut pas tenir compte de la vérif de la valeur 0 car c'est
lorsque justement je n'utilise pas le byte 0
Bref
j'arrive pas à recevoir et écrire dans un fichier 0 à travers le
réseau
any help ?
merci
Stanislas
[email]polustanislas (AT) hotmail (DOT) com[/email] (Stanislas) wrote in message news:<744a1eb5.0503281409.51da1ee1 (AT) posting (DOT) google.com>...
| Quote: | j'ai un client qui envoie un byte = 0.
lorsque mon serveur reçois ça il s'arrête tout simplement
pourriez vous m'aider : voici le code
:--------------main function ----------------------:
ofstream * writepersist = new ofstream
((userpath+newid).c_str(),ios::out|ios::app|ios::binary);
int size = 0;
char c;
while((int)(c=getchar(s))!=0)
{
writepersist->put(c);
size++;
}
:----------------getchar implementation--------------:
char netaction::getchar(int s)
{
char c;
int error=0;
int err;
while(1)
{
getsockopt(s,SOL_SOCKET,SO_ERROR,(char*)&err,(unsigned
int*)sizeof(err));
if(read(s,&c,1)==1) break;
if(errno!=0) {error = 1; break; }
}
if(error==1)
{
shutdown(s,2);
close(s);
exit(0);
}
return c;
}
:--------------------------:
|
|
|
| Back to top |
|
 |
Samuel Krempp Guest
|
Posted: Tue Mar 29, 2005 11:49 am Post subject: Re: impossible de lire 0 depuis le réseau |
|
|
le Tuesday 29 March 2005 13:22, [email]polustanislas (AT) hotmail (DOT) com[/email] écrivit :
| Quote: | Il ne faut pas tenir compte de la vérif de la valeur 0 car c'est
lorsque justement je n'utilise pas le byte 0
|
euh, quoi ? faut pas tenir compte du code que tu as posté ??
dans ce cas je vois mal où on pourrait voir ce qui va pas..
| Quote: | while((int)(c=getchar(s))!=0)
|
faut-il comprendre que cette ligne n'est *pas* à prendre en compte, seule ta
fonction getchar l'est ? hmm pourquoi tu l'as postée alors ?
Dans ce cas ça ne dépend pas du code C++ présent mais de l'implémentation
qu'il y a derrière l'entier 'fd'. Vu qu'on en connait rien (à part que
c'est censé être un socket réseau d'après ce que tu nous a dit), je vois
mal ce que tu espères obtenir des lecteurs de ton article..
""""
-j'ai un code, qui utilise un certain socket réseau, le reste n'est que des
détails. Quand la valeur 0 est passée il s'arrête. Que se passe-t-il donc ?
-hmm, la seule chose qu'on peut supposer à partir de ces informations est
que ce socket s'arrête quand la valeur 0 est passée.
-ah d'accord. merci bcp, au revoir !
"""
Bref, à mon avis tu n'as pas assez mûrement réfléchi avant de poster.
Il aurait été plus utile d'envoyer une question plus précisément sur le
socket réseau que tu utilises, et ce dans le forum le plus adapté possible.
--
Sam
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|