Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

как работает 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.04 c
2-1176365667
dzhagr
2007-04-12 12:14
2007.04.29
TDBGrid


2-1175797381
..::KraN::..
2007-04-05 22:23
2007.04.29
Красивая форма.


3-1170881127
DimDim
2007-02-07 23:45
2007.04.29
Импорт из 1С


1-1172518078
KOSS
2007-02-26 22:27
2007.04.29
Наследник


4-1164976076
SS-ALX
2006-12-01 15:27
2007.04.29
Как с помощью WinAPI (EDM) программно оключить устройство





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский