Zitat von
k6n:
Zitat von
nuclearping:
Genereller Tipp: Ich würde dir empfehlen, die
Indy TCP Komponenten zu nehmen und dich nicht erst an die TSockets von Delphi zu gewöhnen.
Und wieso? Was ist an den
Indy TCP Kompos denn besser?
Dass sie blockierende Sockets verwenden. Ich habe mit asynchronem Nachrichtenempfang (ICS, TClientSocket) nicht die Möglichkeit, exakt solange Bytes vom Socket zu lesen, bis ich alle Daten zusammenhabe (gesteuert über eine Byteanzahl oder ein bestimmtes Zeichenmuster).
Stattdessen wird eine OnServerData o.ä. Methode aufgerufen und jedesmal nur ein Häppchen der Daten übergeben. Das heisst, ich muss bei jedem Häppchen analysieren, ob denn nun das Ende der Nachricht erreicht wurde, und ob im Häppchen eventuell schon der Anfang der nächsten Nachricht enthalten ist.
Bei
Indy lese ich einfach bis zu einem bestimmten Kennzeichen einen Bytestrom aus, und diese Bytes sind dann meine Nachricht, fix & fertig zur Weiterverarbeitung.
Man kann ICS und TClientSocket zwar (soviel ich weiss) auch in blockierendem Modus betrieben, aber ClientSocket ist bereits deprecated und mit
Indy und Synapse gibt es schon zwei mehr als brauchbare Lösungen.
Damit will ich jetzt natürlich nicht sagen, dass die Verwendung von ClientSocket irgendwie gefährlich oder antiquarisch ist