D'après un ami, ce genre de soucis est du à la mauvaise gestion des sockets erronées par mon application.
Si le temps entre le début et la fin d'une socket correcte est trop long ceci peut se produire...
Existe-t-il un paramètre pour changer ce délai?
J'utilise un TServerSocket dans C++builder 5, et traite les évènements:
OnClientConnect
OnAccept
OnClientRead
dans l'évènement OnClientRead je stocke dans un buffer ce que je recois et je le traite
	
	Socket->ReceiveBuf(buf, sizeofBuf);
 J'utilise un vector que j'incrémente à chaque fois que je suis dans l'évènement OnClientConnect
En gros voici le code de ces trois évenements
	
	| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 
 |  
void __fastcall TFormServerApp::ServerSocketClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{
 // Ajout dans le vector de n CLIENT un nouveau Client définit comme non connecté
    VectorClient.push_back(CLIENT(Socket->SocketHandle));
}
 
//---------------------------------------------------------------------------
 
void __fastcall TFormServerApp::ServerSocketAccept(TObject *Sender,
      TCustomWinSocket *Socket)
{
    ListViewAddMessage(ListJournal, Socket, "\4", "ServerSocketAccept", "Authentification of system");
}
 
 
//---------------------------------------------------------------------------
void __fastcall TFormServerApp::ServerSocketClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{
    char              buf[256]; 
    IteratorVecClient   IteratorClient;
    int               sizeofBuf;
 
    IteratorClient = VectorClient.begin(); // return un itérateur sur le 1er élément du vecteur 
 
    while(IteratorClient!=VectorClient.end()) // Tq le vecteur des Clients n'est pas terminé
    {
 
        if(Socket->SocketHandle == (*IteratorClient).Socket.handle)  // Identification du Handle client
        {
            sizeofBuf = Socket->ReceiveLength(); 
            Socket->ReceiveBuf(buf, sizeofBuf); 
        // (long traitement)
            break;
        }
        IteratorClient++;
    }
} | 
 Merci de m'informer s'il y a qqch qui vous choc
						
					
Partager