The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Especial Fóruns > IP Networking
.
google unix.com



IP Networking Saiba o TCP / IP, Internet Protocol, Routing, Routers, protocolos de rede UNIX e Linux neste fórum.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Problema com memória kshk123 HP-UX 2 05-25-2009 08:01
memória problema Sonali Alto Nível de programação 5 05-25-2009 07:55
Memória no pthread mindTeaser UNIX & avançada para usuários experientes 4 05-18-2009 02:30
Memória vazamento de garfo () whererush Alto Nível de programação 7 05-11-2006 12:51
sobre memória virtual e memória shriashishpatil Alto Nível de programação 4 02-20-2006 11:31

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 07-16-2005
lenna lenna is offline
Usuário
  
 

Join Date: Jul 2005
Posts: 3
memória?

Todas oi,

meu cliente servidor de aplicação pode funcionar em dois modos:
1) uma direção - só cliente envia mensagens para o servidor
2) duas direções - servidor dá "respostas" ao cliente.

quando executar o programa no primeiro modo, ela parece bem, mas quando servidor responde ao cliente do cliente do que sair do seu funcionamento após a aplicação de um curto tempo. Estou tentando encontrar o problema, mas têm algumas taugh tempo.

esta é a função que lê os dados no lado do cliente (no qual tenho problemas):



Código:
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);
}

após tampão (decodeUnifiedMsgForServer) é preenchido pela função acima eu decodificar os dados para as classes de dados como se segue:



Código:
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);
}

os 3 primeiros bytes no buffer são inteiros (dados gerais, tais como: - total len, msgid etc) e eu descodificá-los na 2 ª função. depois que eu enviar o buffer em dados específicos de classes que decodificar os dados de que necessitam utilizar o fuction decodeMsg.

minhas perguntas são as seguintes:

1) Porque é o tamanho do buffer (decodeUnifiedMsgForServer) é sempre 0 e não é igual ao comprimento da mensagem recebida do servidor? Sei que os dados são recebidos a partir do servidor porque ele é registrado corretamente, mas quando eu ainda verificar comprimento de msg que equas 0 (primeiro 'se' na segunda função) - quaisquer ideias?

2) quando eu notar a linha que chama o decodeMsg o aplicativo 'comportado' OK e cliente não sair do seu funcionamento. Penso que este erro tem algo a ver com a memória. Talvez se eu entendi a primeira pergunta que eu pudesse entender esta como um bem.

Muito obrigado pela vossa ajuda,
Lenna
 

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 02:32.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0