Hallo theo,
erstmal vielen Dank für dein unermüdliches Bemühen... ich hoffe ich bin jetzt ein bisschen wacher als gestern/heute Nacht.
theo hat geschrieben:Socke hat geschrieben:Zugegeben, ein bisschen mehr Dokumentation könnte nicht Schaden (bspw. für die Unit synsock).
Ich kenne wenige Units die so gut dokumentiert sind.
Hast du Tomaten auf den Augen?
http://synapse.ararat.cz/doc/help/synsock, resp. ssfpc geht auch keinen was an. Das ist der plattformabhängige Layer. Also keine Schnittstellen, die der User benötigt.
Im Vergleich zu anderen Projekten ist Synapse für den Benutzer wirklich gut dokumentiert, auch wenn einige Stellen nicht eindeutig sind (zumindest für einen Unwissenden wie mich). Wobei mir gerade auffällt, dass die Dokumentation im Internet eine andere als auf meinem Rechner ist. Ich hab mir damals Synapse 0.6.2 (stable) gesaugt. Ist das überhaupt richtig oder wäre svn besser?
Die Unit synsock bietet im Endeffekt doch nur eine plattformunabhängige API, die auf WinAPI oder den FPC-bindings aufsetzt. Das heißt, sie muss nicht dokumentiert sein, wenn das, worauf sie aufsetzt dokumentiert ist. Wenn der Benutzer die Unit nicht verwenden soll, müsste er bspw. bei blcksock.TBlockSocket.LastError auf die vom Compiler (bzw. durch die RTL) mitgelieferten Konstanten zurückgreifen (beim FPC mag das noch gehen, aber wenn das Projekt für FPC und Delphi ist, ist das bescheuert, und warum sollte ich nicht die vorhandenen Konstanten benutzen?).
So, jetzt nochmal zu meiner Frage. Wenn du mit Link,
http://synapse.ararat.cz/doku.php/publi ... connection meinst, übertrage ich das mal kurz:
"Direktes Testen ist nicht möglich. Die einzige Möglichkeit ist, Daten zu senden bzw. zu empfangen und den Rückgabe-/Fehlerwert auszuwerten." Zum reinen Testen könnte man also bei FTP den NoOP-Befehl verwenden.
Meine Frage bezog sich nicht direkt auf das reine Testen. Ich hatte viel mehr vor, die Daten direkt zu senden/empfangen und deren ResultCode auszuwerten. TFTPSend.ResultCode beinhaltet nach meinem Verständnis ("After FTP command contains result number of this operation.") aber den vom FTP-Server zurück gelieferten Wert (bei NoOP 200). Im Falle eines Verbindungsabbruchs (Stecker gezogen) kann vom Server aber keine Antwort kommen, das FTP-Ergebnis müsste deshalb undefiniert sein (Synapse setzt, wenn kein Wert zur Verfügung (also nicht nur Timeouts) steht, den Code 0). Trotzdem erhalte ich vom Socket einen Statuscode (TBlockSocket.LastError), den ich auswerten kann.
Hab ich das jetzt so richtig verstanden oder gibts noch irgendwo Fehler/Suboptimalitäten?