TClientSocket Frage



  • Hallöchen.

    Ich arbeite mit TClientSocket und kommuniziere darüber mit einem anderem Server (Fremdsoftware).

    Wenn ich mich dort anmelde bekomme ich eine Rückmeldung in der bei jeder neuen Verbindung ein "Socket" hochgezählt wird.

    Ich bin nicht so Netzwerk bewandert darum meine Fragen.

    Was bedeuten die einzelnen "Socket" und wie kann ich immer zum selben verbinden?

    Wie melde ich mich richtig von diesem "Socket" ab?
    Ein ClientSocket1->Active = false; macht das scheinbar nicht da der Socket auf dem Server bestehen bleibt.

    Kann da wer zu helfen? Danke!



  • hmmm also ich weiß nicht ob die methode ClientSocket1->Close() was anderes als Active = false macht aber versuch´s mal damit.



  • Wie schafft man es das man zum selben "Socket" sich verbindet? Jedesmal wenn ich mich mit dem Server verbinde, zählt er einen "Socket" hoch.



  • Lass den Server doch hochzählen. Es ist eine Eigenschaft dieser Verbindungsart, dass für jeden neuen Kontakt eine neue Verbindung eingerichtet wird. Der Server sollte nach einiger Zeit die verbindungslosen Sockets verwerfen.



  • Ja, aber er scheint nach 30s inaktivität (soll so sein) dann alle Verbindungen zu kappen, darum wollte ich gern wissen ob das ein "Bug" seinerseits ist oder ich immer zur selben Verbindung verbinden müsste und wenn ja, wie.



  • Die BCB-Komponenten haben keine Timeout-Überwachung. Wenn die Verbindung getrennt wird, passiert das wahrscheinlich serverseitig. Was ist eigentlich die "Fremdsoftware"? Ein BCB-TServerSocket? Müssen vielleicht KeepAlive-Telegramme gesendet werden, damit die Verbindung nicht vom Server getrennt wird?

    ClientSocket1->Close() setzt als einzige Aktion Active = false.

    Rob'



  • Womit Server gemacht ist weiss ich nicht. Ja wir senden KeepAlive-Telegramme. Frage bleibt nun wie melde ich mich explizit beim Server ab. Active = false machts nicht und kann man wenn man sich abgemeldet hat (momentan) die noch vorherige Verbindung wiederbenutzen? Eines von beiden muss ich hinbekommen, wobei das wirkliche abmelden wohl das einfachste wäre. Kann da wer helfen?



  • Zum Schließen der Verbindung musst Du die Close() Methode aufrufen. Wie schon in der BCB-Hilfe nachzulesen, setzt Close() die Activeeigenschaft auf false

    At runtime, use the Open or Close method to open or close the connection.

    Wenn Du dich einmal abgemeldet hast, kannst Du die vorherige Verbindung nur wieder nutzen, wenn Du die Verbindung wieder aufbaust.

    Warum musst Du den eines von beiden so hinbekommen? Normalerweise sollte alles mit Open() und Close() lösbar sein.



  • In ermangelung der Kenntniss, was für ein Protokoll du fahren musst, KleineMaus, können wir hier nur rätselraten, was wohl schief gehen mag...


Anmelden zum Antworten