The UNIX and Linux Forums  


Go Back   В UNIX и Linux Форумы > Специальный форум > Сеть IP
.
Google unix.com



Сеть IP Узнайте, TCP / IP, Интернет-протокол, маршрутизации, маршрутизаторов, сетевых протоколов в UNIX и Linux форум.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Проблема утечки памяти kshk123 HP-UX 2 05-25-2009 08:01 AM
Проблема утечки памяти sonali Программирования высокого уровня 5 05-25-2009 07:55 AM
Утечка памяти в pthread mindTeaser UNIX перспективных И опытных пользователей 4 05-18-2009 02:30 AM
Память утечка вилка () whererush Программирования высокого уровня 7 05-11-2006 12:51 PM
о виртуальной памяти и утечка памяти shriashishpatil Программирования высокого уровня 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 Оценить Thread Режимы дисплея
Old 07-16-2005
Lenna lenna is offline
Зарегистрированный пользователь
  
 

Регистрация: Jul 2005
Сообщений: 3
Утечка памяти?

Привет Все,

мой клиент-сервер приложений может работать в двух режимах:
1) в одном направлении - только клиент отправляет сообщения на сервере
2) двух направлениях - сервер дает ответы "для клиента.

при запуске программы в первом режиме он выглядит хорошо, но когда сервер отвечает клиенту, чем клиента заявку выхода его эксплуатации по истечении короткого времени. Я пытаюсь найти проблему, но некоторые taugh времени.

это функция, которая считывает данные на стороне клиента (в котором я есть проблемы):



Код:
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);
}

После буфером (decodeUnifiedMsgForServer) заполняется функцией выше я декодировать данные в соответствующие данным классам следующим образом:



Код:
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);
}

первые 3 байта в буфер чисел (общие данные, например, - всего Лен, msgID т.д.) и декодировать их в 2 функции. после этого я послал в буфер данных классов, декодировать данные, соответствующие их потребностям, используя fuction decodeMsg.

мои вопросы заключаются в следующем:

1) Почему длина буфера (decodeUnifiedMsgForServer) всегда 0 и не равен по длине с MSG, полученные от сервера? Я знаю, что данные, полученные от сервера, поскольку оно регистрируется правильно, но когда я проверить длина сбщ он equas 0 (первое "если" в Вторая функция) - любые идеи?

2) когда я заметил, что на линии вызовов с decodeMsg применение 'себя' OK, и клиент не выход ее работы. Я думаю, что такая ошибка есть что делать с памятью утечки. может быть, если я понял, первый вопрос, я могу понять, как это хорошо.

Большое вам спасибо за вашу помощь,
Lenna
 

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 02:02 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0