Langage C probleme avec fonction read
Fermé
LaZo61
Messages postés
53
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
24 mai 2007 à 11:37
vico la vico's - 8 déc. 2010 à 18:26
vico la vico's - 8 déc. 2010 à 18:26
A voir également:
- Fonction read en c
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- L'état de la memoire ne peut pas etre read - Astuces et Solutions
- Snapchat ils m'ont ajouté par la fonction recherche - Forum Snapchat
6 réponses
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
24 mai 2007 à 12:15
24 mai 2007 à 12:15
Heu readn(), c'est pas une fonction qui existe déjà ? Un truc pour lire plusieurs fois à la suite ?
Sinon essaye comme ça :
Sinon essaye comme ça :
int read_sock (int sockhandle, unsigned char *buf, int taille) { int byte_lu = -1; unsigned char *ptbuf =buf; int length = taille; int i = 0; do { byte_lu = read (sockhandle, ptbuf,length); if (byte_lu > 0) { ptbuf = ptbuf+byte_lu; length = length-byte_lu; } i++; if(i > 10000) return -1; } while (length > 0); return (length); }Ca devrait marcher comme ça
LaZo61
Messages postés
53
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
24 mai 2007
5
24 mai 2007 à 12:05
24 mai 2007 à 12:05
no la taille du buffer elle vaut 1000
en faite j'envoie 3 paquets
|00001|222| ----> 1 er paquet
W skjdfsdjfsdfjdfk ----> 2 eme paquet
Z fdfdsfdf --->3eme paquet
pour le 1 ere paquet elle lie tou
le 2nd elle lie que le w
et le 3eme elle li que le Z
je ne comprend vraiment pas pourquoi
elle ne lie pqs tout le paquet
en faite j'envoie 3 paquets
|00001|222| ----> 1 er paquet
W skjdfsdjfsdfjdfk ----> 2 eme paquet
Z fdfdsfdf --->3eme paquet
pour le 1 ere paquet elle lie tou
le 2nd elle lie que le w
et le 3eme elle li que le Z
je ne comprend vraiment pas pourquoi
elle ne lie pqs tout le paquet
LaZo61
Messages postés
53
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
24 mai 2007
5
24 mai 2007 à 12:09
24 mai 2007 à 12:09
en faite voila mon code :
char buffer[PACKET_SIZE +1];
readn(fin, buffer, PACKET_SIZE);
int readn(int fd, char *ptr, int n){
int nl, nr;
nl = n;
while ( nl > 0 ) {
printf("buffer size : %d\n",nl);
nr = read(fd,ptr,nl);
printf("point 1 : %s\n",ptr);
if (nr < 0 ) {
if ( nr == -1 ) {
*ptr = 0x00;
return (n-nl);
}
return nr; /*error*/
} else {
if ( nr == 0 )
break;
}
nl -= nr;
ptr += nr;
}
/*pointing ptr to the adress 0x00*/
*ptr = 0x00;
return (n-nl);
char buffer[PACKET_SIZE +1];
readn(fin, buffer, PACKET_SIZE);
int readn(int fd, char *ptr, int n){
int nl, nr;
nl = n;
while ( nl > 0 ) {
printf("buffer size : %d\n",nl);
nr = read(fd,ptr,nl);
printf("point 1 : %s\n",ptr);
if (nr < 0 ) {
if ( nr == -1 ) {
*ptr = 0x00;
return (n-nl);
}
return nr; /*error*/
} else {
if ( nr == 0 )
break;
}
nl -= nr;
ptr += nr;
}
/*pointing ptr to the adress 0x00*/
*ptr = 0x00;
return (n-nl);
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
24 mai 2007 à 12:00
24 mai 2007 à 12:00
Salut,
Comment est déclaré buffer ? Taille fixe ou dynamique ? Si dynamique, as-tu fait un malloc/new ? Ton buffersize vaut-il sizeof(buffer) ?
Bon courage
Comment est déclaré buffer ? Taille fixe ou dynamique ? Si dynamique, as-tu fait un malloc/new ? Ton buffersize vaut-il sizeof(buffer) ?
Bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
24 mai 2007 à 12:06
24 mai 2007 à 12:06
Ta déclaration vaut
char buffer [10000];
c'est ça ?
char buffer [10000];
c'est ça ?