Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

как работает TServerClientThread   Найти похожие ветки 

 
malefik   (2006-11-01 08:47) [0]

приветствую коллеги...
вопрос такого плана....все тривиально по хелпу собсно....

//---------------------------------------------------------------------------
void __fastcall TMyServerThread::ClientExecute(void)
{
  while (!Terminated && ClientSocket->Connected)
  {
     try
     {
        TWinSocketStream* pStream = new TWinSocketStream(ClientSocket, CLIENTWAITTIME);

        try
        {
           char buffer[BUFFERSIZE];
           memset(buffer, 0, sizeof(buffer));

           if (pStream->WaitForData(CLIENTWAITTIME))
           {
              if (pStream->Read(buffer, sizeof(buffer)) == 0)
                 ClientSocket->Close();
              else
              {

                     if (!(_gps_data->_send_data_to_base(buffer)))
                                              {
                                               ClientSocket->Close();
                                              }

              }
           }
           else
              ClientSocket->Close();
        }
        __finally
        {
           delete pStream;
        }
     }
     catch (...)
     {
        HandleException();
     }
  }
}
void __fastcall TmainForm::ServerSocketGetThread(TObject* Sender, TServerClientWinSocket* ClientSocket, TServerClientThread*& SocketThread)
{
  SocketThread = new TMyServerThread(false, ClientSocket);
}

собсно вот дочерний класс от TServerClientThread

class PACKAGE TMyServerThread : public Scktcomp::TServerClientThread
{
  public:
     __fastcall TMyServerThread(bool CreateSuspended, TServerClientWinSocket* ASocket)
        : Scktcomp::TServerClientThread(CreateSuspended, ASocket)

        { CreateSuspended = false;
         KeepInCache=true;
         FreeOnTerminate=false;
         _gps_data = new TGPSData();
          };
       __fastcall ~TMyServerThread(void)
       {
        delete(_gps_data);
       }

       void __fastcall ClientExecute(void);
       TGPSData * _gps_data;

};

тут мы видим конструктор и деструктор.....

вопрос.. почему собсно дело до деструктора никогда не доходит????
ставил там брек поинт ......

Как ServerSocket удаляет за собой эти обьекты?


 
Орион ©   (2006-11-01 08:49) [1]

неее... это уже перебор. Ладно в Прочем - он для того и преднозначен, но в сетях...


 
Сергей М. ©   (2006-11-01 08:52) [2]


> почему собсно дело до деструктора никогда не доходит?


Почему не доходит ?
Доходит, но при соблюдении ряда условий.


 
malefik   (2006-11-01 13:13) [3]

можно узнать каких? опыты с дисконектами и работой с мотодами класса результатов не дали...


 
Сергей М. ©   (2006-11-01 13:33) [4]

Если твой деструктор объявлен грамотно (он должен перекрывать виртуальный деструктор предка), то он будет обязательно вызван как минимум однократно - при TServerSocket.Close;


 
Сергей М. ©   (2006-11-01 13:35) [5]


> как минимум однократно


Это я ерунду сморозил.

Читай так:

".. будет обязательно вызван при TServerSocket.Close"


 
malefik   (2006-11-01 14:41) [6]

ХМ......ОБЬЯВЛЕН то он сами видите как.....
> Читай так:
>
> ".. будет обязательно вызван при TServerSocket.Close"


ну блин насмешил......я говорю о том что не небходимости держать в памяти обьекты....еслисоединение по нему уже нет.....а если у меня 10000 подключений....и причем постоянно добавляются.....

КАК ИХ УДАЛЯТЬ???


 
Сергей М. ©   (2006-11-01 15:29) [7]


> ОБЬЯВЛЕН то он сами видите как


Вижу.
Понятия не имею, правильно ли, потому как к Делфи7 сей код отношения не имеет.


> ну блин насмешил


Я тебе что, петрушка базарный, чтобы веселить тебя ?)


> KeepInCache=true


Это ты написал.
Значит ты должен понимать смысл написанного от и до.
Если не понимаешь, то к твоим услугам - станд.справка к компоненту TServerSocket и открытые исх-тексты компонента.


 
Сергей М. ©   (2006-11-01 15:30) [8]


> я говорю о том что не небходимости держать в памяти обьекты


Тебе может быть и нет, а компонент лучше тебя знает, когда ему уничтожать этот объект.

Кэш, батенька, кэш..



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
3-1170350971
Ёжик из тумана
2007-02-01 20:29
2007.04.29
Транзакции в хранимках


15-1175336334
Цукор5
2007-03-31 14:18
2007.04.29
создание HLP


15-1175461855
eXPell
2007-04-02 01:10
2007.04.29
"У царя с каждым разом все хуже получалось"(анекдот)


2-1176295220
I-New
2007-04-11 16:40
2007.04.29
Динамическая загрузка картинок в Timage


2-1176190517
Катеринка
2007-04-10 11:35
2007.04.29
Обработка нажатий клавиш всех процессов