Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.028 c
4-1164724592
Виктор1
2006-11-28 17:36
2007.04.29
Нажать на элемент чужой TPopupMenu


4-1165163623
RealGanj
2006-12-03 19:33
2007.04.29
BallonHint


15-1175721134
Gamer
2007-04-05 01:12
2007.04.29
помогите выбрать звуковуху для старого ПК


15-1174982775
Игорь Шевченко
2007-03-27 12:06
2007.04.29
Не знает ли кто форматировщика исходных текстов на паскале


15-1174989221
zdm
2007-03-27 13:53
2007.04.29
шашки




   Наверх