tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1093
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von thekiller
    thekiller thekiller ist offline Viceinator
    Registriert seit
    Dec 2004
    Ort
    Wismar
    Beiträge
    396
    Hallo,

    ich knobel gerade ein bisschen wie ich Dateien jeglicher Art und beliebiger Größe per TCP verschicken kann. Das Problem dabei ist nicht die Verbindung selbst, dass habe ich alles schon fix und fertig. Ich habe es auch schoneinmal in C programmiert. Zwar nicht elegant aber es hat funktioniert. Nun jetzt habe ich mich rangesetzt es komplett mit C++ mitteln zu programmieren aber irgendwie will dass nicht so wirklich.
    Naja ich hätte halt auch gerne ein paar Informationen wie man überhaupt richtig an die Sache rann geht! Was muss ich bedenken um Fehler zu vermeiden? Habt Ihr evtl. gute Beispiele?
    Achja und falls es wichtig ist ich verwende die MFC(CSocket) für die Netzwerkverbindung.

    Danke schonmal
    LG Manu
     
    OS: Win 7 Ultimate x64
    CPU: Intel Core i7 2600K (3,4GHz - 3,8 GHz)
    RAM: 4 x 8GB-DDR3 1333MHz
    Board: Asus P8Z68-V/Gen3
    GFX: Nvidia GTX580 (Palit)

    Cinema 4D R12, Photoshop CS5, Visual Studio 2010, Qt SDK, Notepad++
    blog.unlimitedengine.de
    design-projects.de

  2. #2
    PoebelundGesocks PoebelundGesocks ist offline Mitglied Bronze
    Registriert seit
    Feb 2004
    Ort
    Ehingen (BW)
    Beiträge
    41
    Damit:
    Code :
    1
    2
    3
    4
    5
    
    virtual int Send(
       const void* lpBuf,
       int nBufLen,
       int nFlags = 0 
    );
    ?!

    Ich verstehs Problem nicht ganz, such dir n Puffer aus ... BYTE * bBuf = new BYTE[1024];
    oder so, dann lieste die Datei aus in 1024er blöcken, und haust das per Send ins netz, wenn die Verbindung steht, reagierste über OnReceive (Callback) auf die einkommenden Daten und stückelst sie in braven 1024er blöcken wieder zusammen.

    Bei mir sieht das so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    sendFile.Open(this->d_strFileName, CFile::modeRead, NULL);
    do
    {
        iRead = sendFile.Read(ReadBuf, 1024);
        ::_itoa(iRead, pBuf, 10);
        this->Send(pBuf, 4); // übertrage größe des Pakets
        this->Send(ReadBuf, iRead); // übertrage paket
        //Sleep(100); //Debuggingzwecke
    } while(iRead > 0);
    /e: Achja, was du bedenken solltest: Dein Empfangspuffer leert sich nicht in "Null" zeit, sondern braucht immer Zeit, ebenso gehts deinem Sendepuffer. Standard war AFAIK 8kb, kann mich hier aber auch täuschen.
    Hau dir doch gegebenenfalls ne log rein wie oft deine OnReceive aufgerufen wird, (evtl mit paketnummerierung) dann siehste wo fehler auftreten/ ob die kommunikation funktioniert oder ob generell was nicht stimmt - wobei dein Send in dem Fall n Error werfen sollte.
    Geändert von PoebelundGesocks (04.02.10 um 13:27 Uhr) Grund: /e & formatierung
     

Ähnliche Themen

  1. Winsock Dateien Senden
    Von DelphiDell im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 07.05.06, 18:19
  2. SHOUTCAST: *.nsv Dateien senden?
    Von djspike im Forum Videoschnitt, Videotechnik & -produktion
    Antworten: 3
    Letzter Beitrag: 09.10.05, 12:00
  3. C# - Dateien im Netzwerk senden
    Von Alexander12 im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 18.07.05, 21:10
  4. mehrere dateien mit formular senden
    Von fercules im Forum PHP
    Antworten: 10
    Letzter Beitrag: 31.10.04, 22:09
  5. Dateien von UserPC per eMail senden
    Von CoRe im Forum PHP
    Antworten: 5
    Letzter Beitrag: 05.09.02, 14:53