Как использовать IdThreadComponent в C ++ Builder - PullRequest
0 голосов
/ 14 апреля 2011

Как использовать IdThreadComponent с TIdyTCPServer в C ++ Builder ????

Пожалуйста, помогите!

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

TIdTCPServer является многопоточным для вас. Вам не нужно использовать TIdThread или TIdThreadComponent напрямую.

0 голосов
/ 16 декабря 2013

Вы можете напрямую обращаться к контексту при обработке методов

void __fastcall TCPServer::OnDisconnect(TIdContext *AContext){
    AContext->Binding()->PeerIP //Returns IP Of the just connected client
        AContext->Binding()->PeerPort;

}

Сообщения могут быть прочитаны по событию Execute

AContext->Connection->Socket->ReadBytes(buf, 4, false);

Также в любом месте вашей программы вы можете получить контекст следующим образом:

TList *list = IdTCPServer1->Contexts->LockList();
         for(int i=0; i<IdTCPServer1->Contexts->LockList()->Count; i++){
            TIdContext *AContext = (TIdContext*)(list->Items[i]);
            if(AContext ->Binding()->PeerIP ==  clientIP){  // say you want to reach the context of a specified IP
                //Do something
            }
         }
        IdTCPServer1->Contexts->UnlockList();
...