![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| IP Networking Lær TCP / IP, Internet Protocol, Routing, rutere Network protokollene i UNIX og Linux forum. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| Problemet med minne lekkasje | kshk123 | HP-UX | 2 | 05-25-2009 08:01 |
| minne lekkasje problem | sonali | High Level Programmering | 5 | 05-25-2009 07:55 |
| Minne lekkasje i pthread | mindTeaser | UNIX for Advanced & ekspertbrukere | 4 | 05-18-2009 02:30 |
| Minne lekkasje av fork () | whererush | High Level Programmering | 7 | 05-11-2006 12:51 |
| om virtuelt minne og minne lekkasje | shriashishpatil | High Level Programmering | 4 | 02-20-2006 11:31 |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
||||
|
minne lekkasje?
Hei Alle, min klient server applikasjon kan arbeide i to moduser: 1) én retning - kun klienten sender meld til server 2) to retninger - server gir "svar" til klienten. når programmet kjøres i den første modusen det ser OK ut, men når server svar til klienten enn klientens søknad avslutte sin drift etter en kort stund. Jeg prøver å finne problemet, men har litt taugh tid. Dette er funksjonen som leser dataene på klientsiden (som jeg har problemer): 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);
}
etter buffer (decodeUnifiedMsgForServer) er fylt av funksjonen ovenfor jeg dekode dataene inn de relevante dataene klasser som følger: 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);
}
de første 3 bytes i buffer er heltall (generelle data, for eksempel - totalt len, msgid osv.) og jeg dekode dem i 2. funksjonen. etterpå jeg sende buffer i spesifikke data klasser som dekode de relevante dataene de trenger ved hjelp av fuction decodeMsg. mitt spørsmål er som følger: 1) hvorfor er lengden på buffer (decodeUnifiedMsgForServer) er alltid 0 og ikke lik til lengden på melding mottatt fra server? Jeg vet at data er mottatt fra serveren fordi den er logget riktig, men når jeg sjekker lengden msg det equas 0 (første "hvis" i andre funksjonen) - noen ideer? 2) når jeg bemerket linjen som kaller decodeMsg programmet "oppførte seg OK og klient ikke avslutte sin drift. Jeg tror at denne feilen har noe å gjøre med minnelekkasje. Kanskje hvis jeg forstod det første spørsmålet jeg kunne forstå dette også. Tusen takk for hjelpen, Lenna |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|