rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Langage C probleme avec fonction read

LaZo61, le jeudi 24 mai 2007 à 11:37:53
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
Répondre à LaZo61  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
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


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 Stupeflip, le jeudi 24 mai 2007 à 12:15:06
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
Logiciels pertinents trouvés dans les téléchargements
Télécharger Foxit Reader 2.3 Build 3201Foxit Reader - Foxit Reader est un lecteur de fichiers PDF très léger, et rapide à démarrer, contrairement à Adobe Acrobat Reader. Il...Catégorie: PDF
Licence: Freeware/gratuit
Télécharger Easy CD-DA Xtractor 11_5_3 trialEasy CD-DA Xtractor - Easy CD-DA Xtractor est un extracteur de CD audio pour Windows (CD ripper) capable d'encoder directement aux formats MP3 et...Catégorie: Extraction
Licence: Demo
Télécharger SpamBayes 1.0.4SpamBayes - SpamBayes est un filtre anti-spam, initialement basé sur le travail de Paul Graham, c'est-à-dire un algorithme permettant de...Catégorie: Antispam
Licence: Freeware/gratuit
Télécharger ClamWin 0.93.1ClamWin - ClamWin est un antivirus gratuit. Il fournit une interface graphique conviviale au moteur Clam AntiVirus. L'Antivirus...Catégorie: Antivirus
Licence: Open Source
Plus de logiciels gratuits sur « langage C probleme avec fonction read »