Datei über send() verschicken



  • cooky451 schrieb:

    Editiere deinen Code mal so, dass man ihn vernünftig lesen kann. Weniger Leerzeilen, richtig einrücken etc.
    Dann kann man auch was dazu schreiben. (Und da sind so einige Patzer drin.)
    PS: Da gehört eher ins WinAPI Forum.

    okey aber warum WinAPI ^^
    kannst du mir das mal erklären ? das meinen immer alle 😛
    ich editire ebend 😛



  • Tibolus schrieb:

    okey aber warum WinAPI ^^
    kannst du mir das mal erklären?

    Standard C++ kennt keine Sockets.
    Die Funktionen kommen, tada, aus der WinAPI.
    Aber das nur am Rande.


  • Mod

    cooky451 schrieb:

    PS: Da gehört eher ins WinAPI Forum.

    Kommt drauf an, vielleicht will er auch wissen, wie der C++-Teil seines Codes ist. Aber das ist schnell zu beantworten:
    @Threadersteller:

    • Du machst das berüchtigte C mit cout, welches in schlechten Büchern als C++ verkauft wird (oder auch gerne als C/C++), aber nichts mit echtem C++ zu tun hat und auch keine echten Vorteile gegen C hat.
    • using namespace in Headern ist extrem schlechter Stil.
    • Globale Variablen sind extrem schlechter Stil.
    • Globale Variablen in Headern sind schlichtweg falsch.
    • Alles im Header zu implementieren ist ebenfalls ... ungewöhnlich. Besonders in C (in C++ gäbe es ein paar Gründe dafür, die hier aber nicht vorliegen)
    • Alles im Header implementieren mit externer Bindung ist schlichtweg falsch.
    • Im Rest sind sicherlich auch noch haufenweise Fehler, dafür müsste ich besser Winapi können. Konstrukte wie
    char user_name[255];  
        nSize = sizeof( user_name );
        GetUserNameA( user_name, &nSize );
    

    sehen jedenfalls äußerst abenteuerlich aus.

    Und nun ab nach Winapi, dann können die Experten auch nochmal ihren Senf dazu geben, ob du die Winapi-Teile überhaupt richtig benutzt.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ein kleiner Zusatz noch von mir:
    Wenns Dir hier nur drum geht eine automatische Updatefunktionen einzubauen, dann geht das mit libCURL imho viel schneller und eleganter, einen http-server vorrausgesetzt.
    Einfach eine Textdatei auf dem Server anlegen, mit der Versionsnummer. Runterladen mit libCURL, auswerten, die Frage nach dem Update stellen und dann die neue Version runterladen.
    Das braucht weniger Code als mit "rohen" Sockets und ist angenehmer zu programmieren. Bei Interesse poste ich gerne nen Beispiel ;).



  • ne ich suche ienfahc ne möglichkeit eine datei rüberzuverschicken 😛

    egal wie es hat nicht nur den sinn für mein update programm 😛



  • Dafür gibt es Tausende fertige Programme und Libraries. Am einfachsten macht es die WinAPI dir mit TransmitFile().



  • Tibolus schrieb:

    laut meines wissens kann man mit send() nur char variablen verschicken 😛

    Dann schau dir nochmal die Paramter von send() genauer an.
    Dass da ein Zeiger auf char und ein Parameter len vorhanden sind, sollte schon genug Hinweis sein, dass da ein Speicherbereich übertragen wird.



  • ⚠

    stellt bitte keine kritik an meinem code (es ist nur aus lw enstanden und war nur zum test)

    ⚠



  • Jodocus schrieb:

    Dafür gibt es Tausende fertige Programme und Libraries. Am einfachsten macht es die WinAPI dir mit TransmitFile().

    kannst du mir mal ein beispielcode geben ?





  • Hallo,

    warum liest du nicht einfach eine Datei in einem Buffer ein und schickst diesen Buffer über Winsock ab?

    Wenn die Datei groß ist, solltest du sie häppchenweise verschicken.. dazu immer ein Flag mitsenden wann das letzte Paket kommt und gut ist... Auf der anderen Seite nur noch zusammensetzten. Das ganze packst du schön in eine Struktur.

    Für das lesen und schreiben von Dateien eignet sich die WinAPI hervorragend.

    Gruß, Nicky



  • Tibolus schrieb:

    ...
    laut meines wissens kann man mit send() nur char variablen verschicken 😛
    deswegen such ich eine möglichkeit eine Datei einzulesen (binär) sie über tcp zu verschicken...

    Nach diesem Satz ist mir klar das Dir die nötigen Grundlagen der Programmiersprache fehlen. Dort solltest Du mal ansetzen...


Anmelden zum Antworten