The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Forums spécial > IP Networking
.
google unix.com



IP Networking Apprendre le protocole TCP / IP, protocole Internet, routage, routeurs, protocoles réseau dans ce forum Linux et UNIX.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Problème de fuite de mémoire kshk123 HP-UX 2 05-25-2009 08:01 AM
problème de fuite de mémoire Sonali High Level Programming 5 05-25-2009 07:55 AM
Fuite de mémoire dans pthread mindTeaser UNIX for Advanced & Expert Users 4 05-18-2009 02:30 AM
Fuite de mémoire de la fourchette () whererush High Level Programming 7 05-11-2006 12:51 PM
sur la mémoire virtuelle et de fuite de mémoire shriashishpatil High Level Programming 4 02-20-2006 11:31 AM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 07-16-2005
Lenna lenna is offline
Registered User
  
 

Date d'inscription: juillet 2005
Messages: 3
fuite de mémoire?

Salut tous,

mon client, serveur d'application peut fonctionner en deux modes:
1) un sens - que le client envoie des messages au serveur
2) les deux directions - serveur donne des réponses "à la clientèle.

lorsque programme exécuté dans le premier mode, il semble OK, mais quand le serveur répond au client que le client demande la sortie de son fonctionnement après un peu de temps. J'essaie de trouver le problème, mais certains ont taugh temps.

c'est la fonction qui lit les données dans la partie client (dans lequel j'ai des problèmes):


Code:
int TCPClient::readSocketData(int s,
              char *decodeUnifiedMsgForServer,			
              int n,			
	 bool& isMsg
             )
{
	int bcount;							int br;							
	bcount = 0;
	br = 0;
	while (bcount < n)					
	{
		if ((br = recv(s,decodeUnifiedMsgForServer,n-bcount,0)) > 0)
		{
			isMsg = true;
			bcount += br;							decodeUnifiedMsgForServer+= br;              
		}
		else if (br < 0)             /* signal an error to the caller */
		{
			return(-1);
		}
		else							             {
			return bcount;
		}
		//Y 17_04_05 -
		Sleep(0);
		//Y.
                   }
  return(bcount);
}
après tampon (decodeUnifiedMsgForServer) est rempli par la fonction ci-dessus, je décoder les données dans les classes de données comme suit:


Code:
void BrainControlComData::decodeMsg(char* decodeUnifiedMsgForServer)
{



	if(strlen(decodeUnifiedMsgForServer) == 0)			
             {
		char* error = "probably an error (see Q1 below)";
	}


	char* msg = decodeUnifiedMsgForServer;
	int size = 4;

	int lenCursorData;
	int lenManipData;
	int lenVzData;

//places 1 - 12 in msg are reserved for total size/ isEventMsg/ MsgID

	int Web_lenOfClass;					
// decode len of msg
	memcpy(&Web_lenOfClass, msg, size);
	int lenOfClass = ntohl(Web_lenOfClass);

	int Web_MsgID;						
// decode msg ID
	memcpy(&Web_MsgID, msg + MSG_ID_LOCATION, size);
	int msgID = ntohl(Web_MsgID);



	//Y 6_07_05 -
	int counter = 12;

	int len = 0;
	len = comData[CURSOR_DATA]->decodeMsg(msg + counter);
	counter += len;

	len = comData[STATE_DATA]->decodeMsg(msg);
}
les 3 premiers octets de la mémoire tampon sont des entiers (tels que des données générales - total len, msgid etc) et je les décoder dans la 2ème fonction. ensuite envoyer dans la mémoire tampon des données spécifiques des classes de décoder les données pertinentes dont ils ont besoin à l'aide du FONCTION decodeMsg.

mes questions sont les suivantes:

1) pourquoi la longueur du tampon (decodeUnifiedMsgForServer) est toujours égale à 0 et non à la longueur du message reçu du serveur? Je sais que les données sont reçues par le serveur parce qu'il est connecté correctement, mais quand je vérifie la longueur de ce msg equas 0 (premier «si» à la deuxième fonction) - des idées?

2) quand j'ai remarqué la ligne qui appelle la decodeMsg l'application "comportement" OK "et le client n'a pas de sortie de son fonctionnement. Je pense que cette erreur a quelque chose à voir avec la fuite de mémoire. peut-être que si j'ai bien compris la première question, je peut comprendre celui-là.

Merci beaucoup pour votre aide,
Lenna
 

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 02:55 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0