![]() |
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.
|
|
google unix.com
|
|||||||
| Forums | S'inscrire | Forum Rules | Liens | Albums | FAQ | Liste des membres | Calendrier | Recherche | Aujourd'hui, les postes | Marquer les forums comme lus |
| 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 |
|
|
LinkBack | Thread Tools | Recherche sur ce Thread | Rate Thread | Modes d'affichage |
|
||||
|
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);
}
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);
}
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 |
| Modes d'affichage | Rate this thread |
|
|