Socket reagiert nicht auf verbindungsunterbrechung



  • Hi,

    ich benutze die Komponente TClientSocket

    pSocket = new TClientSocket(NULL);
       	pSocket->Active = false;
       	pSocket->Address = "0.0.0.0"; //wird später vorm Connect gesetzt
       	pSocket->Port = 0;            //wird später vorm Connect gesetzt
       	pSocket->ClientType = ctNonBlocking;
       	pSocket->OnConnect = pSocketConnect;
       	pSocket->OnDisconnect = pSocketDisconnect;
       	pSocket->OnError = pSocketError;
       	pSocket->OnRead = pSocketRead;
    

    der Verbindungsaufbau klappt wunderbar. Es wird eine Verbindung zu einem Rabbit4010 Microcontroller aufgebaut.

    Wenn die Verbindung unterbrochen wird (z.B.: Trenne ich den Rabbit4010 von der Stromversorgung) dauert es 10-15 minuten eh die Funktion pSocketError aufgerufen wird. (Manchmal wird es auch überhaupt nicht erkannt)

    Woran könnte dies liegen?

    MfG



  • Hallo

    das Verhalten ist normal, m.E. kommt eine Fehlermeldung erst wenn nach dem
    senden kein TCP-ACK empfangen wurde. Ich hatte das gleiche Problem und zuerst
    versucht an den TCPIP-Parametern von Windows wie Timeout, keep-alive etc rumzuspielen. Habe mir dann aber einfach beholfen, indem der Client jede
    Sekunde etwas an den Server sendet, und der schickt das gleiche nochmal
    zurück. Dann kommt ziemlich direkt eine Fehlermeldung.

    Gruss


Anmelden zum Antworten