Protokoll zum Dateitransfer gesucht



  • otze schrieb:

    Weil die Datei Indikator fuer die Existenz von bestimmten Dingen sein koennte. Siehe Unix-Derivate

    Das hat aber nichts mit der Aufgabenstellung des OPs zu tun, dessen Client eine Datei sinnvollen Inhalts benötigt.

    Btw, Anhand des Verhaltens des Servers bei der Verbindungsaufnahme, ließe sich dem Client übrigens tatsächlich mitteilen, ob keine Datei, oder eine der Länge 0 auf dem Server schlummert. Wir brauchen diese Unterscheidung hier aber trotzdem nicht.



  • Ich denke es wäre sicherer, ein einfaches Protokoll drumrum zu basteln. Es könnte beispielsweise so aussehen:

    GET /datei.txt MYFTP/1.0
    

    Antwort:

    Content-Length: 4711
    
    ...daten...
    

    Ich denke, das ist recht einfach zu implementieren und könnte später erweitert werden.

    Ach - mir fällt gerade auf, dass man ja statt MYFTP auch HTTP schreiben könnte. Dann wäre es ja so gar zufälligerweise HTTP. Dann ist das ja möglicherweise doch nicht so mit Kanonen auf Spatzen geschossen 😉 .



  • Z schrieb:

    Btw, Anhand des Verhaltens des Servers bei der Verbindungsaufnahme, ließe sich dem Client übrigens tatsächlich mitteilen, ob keine Datei, oder eine der Länge 0 auf dem Server schlummert. Wir brauchen diese Unterscheidung hier aber trotzdem nicht.

    Ja man kann viel machen.
    Es kann aber auch viel in die Hose gehen, weil andere Komponenten (Router, Bridges, ...) andere (u.U. nicht standardkonforme) Vorstellungen davon haben wie bestimmte Dinge abzulaufen haben.

    Sich da auf ein bestimmtes Verhalten zu verlassen ist mMn. einigermassen riskant.

    Das hat aber nichts mit der Aufgabenstellung des OPs zu tun, dessen Client eine Datei sinnvollen Inhalts benötigt.

    Es wurde glaub ich nirgends gesagt (geschrieben), dass die Datei immer > 0 Byte gross sein wird/muss.
    Das nächste Glücksspiel.



  • ich bins schrieb:

    (...)
    Ach - mir fällt gerade auf, dass man ja statt MYFTP auch HTTP schreiben könnte. Dann wäre es ja so gar zufälligerweise HTTP. Dann ist das ja möglicherweise doch nicht so mit Kanonen auf Spatzen geschossen 😉 .

    Einen vollständigen HTTP Server oder Client zu implementieren ist um ein vielfaches mehr Aufwand als das.
    Und eine "geht mit den meisten anderen Servern/Clients" Lösung ist IMO nicht sinnvoll.
    Dann lieber gleich libcurl/NEON/...



  • hustbaer schrieb:

    Einen vollständigen HTTP Server oder Client zu implementieren ist um ein vielfaches mehr Aufwand als das.

    Nein. Das sind keine 5 Minuten arbeit. Weil es für HTTP schon alles fertig gibt.
    2 Minuten mit Node.js einen Server geschrieben der dir die Dateien ausliefert und in 2 Minuten mit libcurl oder einer der anderen 100mio HTTP Client Implementierungen den Client Code geschrieben. In vielen File-Libraries gibt es zB sogar nativen Support für HTTP Requests.

    Und man muss den Server oder Client ja nichtmal selber schreiben. curl/wget auf der Client Seite und lighthttpd oder den nativen HTTP Server des Host OS.

    Deshalb würde ich hier prinzipiell erstmal HTTP wählen. Wenn das nicht 100% passt würde ich erstmal bei HTTP bleiben und wenn es akute Probleme gibt mir ernsthaft überlegen ob HTTP nicht die beste Lösung ist. Und dann erst nach Alternativen suchen.



  • hustbaer schrieb:

    Dann lieber gleich libcurl/NEON/...

    Shade Of Mine schrieb:

    Nein. Das sind keine 5 Minuten arbeit. Weil es für HTTP schon alles fertig gibt. [..] Deshalb würde ich hier prinzipiell erstmal HTTP wählen.

    Zum Glück sind wir alle einer Meinung. 😃



  • hustbaer schrieb:

    Ja man kann viel machen.
    Es kann aber auch viel in die Hose gehen, weil andere Komponenten (Router, Bridges, ...) andere (u.U. nicht standardkonforme) Vorstellungen davon haben wie bestimmte Dinge abzulaufen haben.
    Sich da auf ein bestimmtes Verhalten zu verlassen ist mMn. einigermassen riskant.

    Alles beruht auf standardgemäßem TCP/IP-Verhalten. Wenn eine Komponente involviert ist die dermaßen dazwischenfunkt, dass TCP/IP nicht mehr wie gewöhnlich funktioniert, haben wir sowieso ganz schlechte Karten.

    hustbaer schrieb:

    Das hat aber nichts mit der Aufgabenstellung des OPs zu tun, dessen Client eine Datei sinnvollen Inhalts benötigt.

    Es wurde glaub ich nirgends gesagt (geschrieben), dass die Datei immer > 0 Byte gross sein wird/muss.

    Er schrieb, dass er eine .exe-Datei verschicken möchte. Lies bitte sein Eingangs-Posting.

    Thema: ich sehe es wie "Shade of Mine". Machs dir einfach, benutze gewöhnliches HTTP. Libcurl kann das, viele Clients und Browsers können das. Und alles wird gut. :p


Anmelden zum Antworten