Flux rss
Collection CommentÇaMarche.net
Rechercher : dans
Par :

Langage C probleme avec fonction read

LaZo61, le jeudi 24 mai 2007 à 11:37:53 
 Signaler ce message aux modérateurs

Bonjour,
j'ai creer un client serveur.
Mon client envoyer des donnes du type :
"V 0000000000000000000" a la socket serveur et si je sniff je peu voir que la socket serveur la bien recu,
cependant dans mon code
si je fait un
read(fd,buffer,buffersize);
il lie que la premiere caractere en locurence le "V"
mai si sur le socket serveur il est envoyer des donnes sans espace il lie tou.
Comment remedie a ce probleme
merci davance

C* -----> Either exist as you are or be as you look <---- C*

Configuration: Linux
Firefox 1.0.7

1

Stupeflip, le jeudi 24 mai 2007 à 12:00:12

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
Qui n'a rien n'a rien (Proverbe Norvillois)

Répondre à Stupeflip

2

LaZo61, le jeudi 24 mai 2007 à 12:05:10

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
C* -----> Either exist as you are or be as you look <---- C*

Répondre à LaZo61

3

Stupeflip, le jeudi 24 mai 2007 à 12:06:25

Ta déclaration vaut
char buffer [10000];
c'est ça ?
Qui n'a rien n'a rien (Proverbe Norvillois)

Répondre à Stupeflip

4

LaZo61, le jeudi 24 mai 2007 à 12:09:06

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);

avec packetsize aui est defini a 1000


C* -----> Either exist as you are or be as you look <---- C*

Répondre à LaZo61

5

 Stupeflip, le jeudi 24 mai 2007 à 12:15:06
  • +2

Heu readn(), c'est pas une fonction qui existe déjà ? Un truc pour lire plusieurs fois à la suite ?

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
Qui n'a rien n'a rien (Proverbe Norvillois)

Répondre à Stupeflip
Caractéristiques du langage C Le fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par... www.commentcamarche.net/contents/c/ccarac.php3
Langage C++ - Les pointeurs Comme en langage C, le langage C++ permet d'utiliser des pointeurs pour manipuler des données, mais il introduit aussi le concept de référence, très pratique pour permettre la modification d'une donnée passée en paramètre d'une fonction. Définition... www.commentcamarche.net/contents/cpp/cpppoint.php3
Strtok en langage c slt, je veux savoir qu'est ce qu'elle fait la fonction strtok en langage c , j'ai chercher mais j'ai pas bien compris son fonctionemnt. et merci www.commentcamarche.net/forum/affich-6991168-strtok-en-langage-c
Exec en langage C (Résolu)Bonjour à tous. J'écris un programme en langage C permettant de créer un fichier de config (pour MRTG). Pour cela je dois utiliser la primitive "exec", la commande que je souhaite lancer ressemble à : snmpgetnext -c community IPadress OID. Comment "... www.commentcamarche.net/forum/affich-1623603-exec-en-langage-c
Petit programme en langage C (Résolu)Bonjour, Etantdonné débutant en langage C, permettez moi S.V.P de vous adresser mon petit probléme que je n'arrive à comprendre la réponse: l'ennoncé de l'exercie: Écrire une fonction qui ne renvoie aucune valeur et qui détermine la valeur maximale et... www.commentcamarche.net/forum/affich-2811312-petit-programme-en-langage-c
Language c cours+exercices corrigésbonjour tout le monde je voulait avoir un cours sur le language c ainsi que des exercices simples accompagnés de correction www.commentcamarche.net/forum/affich-1662403-language-c-cours-exercices-corriges
Langage C - Les fonctionsLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du... www.commentcamarche.net/contents/c/cfonc.php3
Langage C - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/c/cvar.php3
Langage C++ - Les fonctionsLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du... www.commentcamarche.net/contents/cpp/cppfonc.php3