The UNIX and Linux Forums  
Ciao e benvenuto da parte degli Stati Uniti al UNIX e Linux Forum! Grazie per la visita ed unirsi alla nostra Comunità Globale.

Go Back   UNIX e Linux Forum > Special Forum > Reti IP
.
google unix.com



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

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 07-16-2005
Lenna lenna is offline
Utente Registrato
  
 

Iscriviti Data: luglio 2005
Interventi: 3
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);
}
dopo tampone (decodeUnifiedMsgForServer) è riempito dalla funzione di cui sopra ho decodificare i dati in classi i dati come segue:


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);
}
i primi 3 byte nel buffer sono interi (dati generali, quali - totale len, msgid ecc) e decodificare nella 2a funzione. successivamente inviare il buffer di dati in classi di decodificare i dati di cui hanno bisogno utilizzando il fuction decodeMsg.

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
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 04:24 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0