![]() |
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Reti IP Per saperne di TCP / IP, Internet Protocol, Routing, Router, Protocolli di rete in questo forum di UNIX e Linux. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| Problemi con la perdita di memoria | kshk123 | HP-UX | 2 | 05-25-2009 07:01 AM |
| problema di perdita di memoria | Sonali | Di programmazione ad alto livello | 5 | 05-25-2009 06:55 AM |
| Perdita di memoria in pthread | mindTeaser | UNIX e avanzata per utenti esperti | 4 | 05-18-2009 01:30 AM |
| Perdita di memoria di fork () | whererush | Di programmazione ad alto livello | 7 | 05-11-2006 11:51 AM |
| su memoria virtuale e di perdita di memoria | shriashishpatil | Di programmazione ad alto livello | 4 | 02-20-2006 11:31 AM |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
||||
|
perdita di memoria?
Hi All,
la mia applicazione client-server può funzionare in due modi: 1) una direzione - msg solo client invia al server 2) due direzioni - server dà 'risposta' al cliente. programma quando eseguito in prima modalità sembra OK, ma quando le risposte ai client del server di applicazione del cliente uscita il suo funzionamento, dopo un breve tempo. Sto cercando di trovare il problema, ma alcuni hanno taugh tempo. questa è la funzione che legge i dati in lato client (in cui ho problemi): Codice:
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);
}
Codice:
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);
}
le mie domande sono le seguenti: 1) perché è la lunghezza del buffer (decodeUnifiedMsgForServer) è sempre 0 e non equivale alla lunghezza del msg ricevuto dal server? So che i dati vengono ricevuti dal server perché è connesso correttamente, ma quando ho verificare che la lunghezza del msg equas 0 (primo 'se' nella seconda funzione) - tutte le idee? 2) quando ho fatto notare la linea che chiama l'applicazione decodeMsg 'comportata' OK e il cliente non ha l'uscita del suo funzionamento. Credo che questo errore ha qualcosa a che fare con la perdita di memoria. forse ho capito se la prima domanda ho potuto capire come questo sia uno. Thank you so much for your help, Lenna |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|