Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

Re: TClientsocket verbindet sich nur einmal

  Alt 28. Feb 2009, 19:24
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
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat