Also ein gutes Beispiel für eine
Indy Implementierung muss erstmal gefunden werden, das rein anhand des Codes (Source code studieren) zu machen ist einfach gefrickel und eine "best practice" für die Nutzung der Komponente konnte ich auch nicht finden.
Ich selbst habe jetzt zwei Libraries für Sockets verwendet, im selben Projekt für die exakt selbe Aufgabe. Ich war mit der OverbyteICS Lösung weitaus zufriedener - ich weis allerdings nicht wie gut diese in Zukunft noch supported wird oder ob überhaupt?
Hier ein Link:
http://wiki.overbyte.be/wiki/index.php/ICS_Download
Ich möchte diesen Thread zwar nicht hijacken aber ich wäre sehr dankbar, wenn mir jemand ein paar gute Beispiele für eine
Indy Implementierung bei einer Client Anwendung (
TCP) liefern könnte.
Folgende zwei konkreten Probleme hatte ich bei
Indy (die OverbyteICS Implementierung lief eigentlich ziemlich reibungslos):
- Ein OnDataAvialable Event fehlt völlig, ich habe es mit einem Thread gelöst, der auf der Socket Ebene (IOHandler) die Methode pIndyTCPClient.Socket.CheckForDataOnSource(1) ausführt, wenn hier ein True zurückkommt löse ich mein eigenes OnDataAvailable Event aus.
- Das einfache Empfangen von Daten. Ich rufe pIndyTCPClient.Socket.ReadBytes(Buffer, size, False); auf und es tut sich nichts, bis nach ein paar Sekunden eine
Exception geworfen wird. Gelöst habe ich dies, indem ich über den pIndyTCPClient.Socket.InputBuffer gehe. (hier darf man nach einem ExtractToBytes / ExtractToString) nicht vergessn ein Remove aufzurufen.
Diese Beispiele und meine Lösungen sind jetzt natürlich komplett aus dem Kontext gerissen, wenn mir hier jemand eine schöne / nützliche Implementierung zeigen könnte, wobei diese Fehler nicht auftreten wäre ich sehr dankbar.
Aber bitte kein Beispiel im Sinne von:
Code:
Socket.Connect;
Socket.WriteLn("Hello");
response := Socket.ReadLn;
Socket.Disconnect;
Nachteil an OverbyteICS: Nicht Android kompatibel. Dafür bietet sie allerdings meiner Meinung nach das schönere Interface.
[Dies war eine Antwort auf die Frage, welche TCP/IP Libraries sich in Delphi anbiete und kein eigenständiger Post, da dies keine Diskussion oder Fragerunde aufrufen sollte, sondern lediglich als Tipp, mit welcher der beiden Libraries ich besser klar kam und dass es nicht nur Indy gibt]
Schön, dass dieser Post komplett verschoben wurde und nun nicht mehr in der eigentlichen Frage als Antwort vorhanden ist. Somit wurde die Frage lediglich mit "
Indy" beantwortet anstatt noch eine weitere option zu nennen.