Anzeige:
Ergebnis 1 bis 7 von 7

Thema: [Socket]: Datei übertragen

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.04.2003
    Beiträge
    194

    [Socket]: Datei übertragen

    Hi Leute!

    Ich beschäftige mich seit kurzem mit Socket-Programmierung, und habe natürlich die Funktionen send() und recv() kennengelernt. Ok Text zu senden/abrufen ist kein Problem, aber angenommen ich will eine kompilierte Datei übers Netzwerk übertragen, wie macht man dass dann?!? Das muss man ja auch mit send() machen, oder steckt hier mehr Logik dahinter?!?

    mfG
    Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

  2. #2
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    Du kannst binärdateien auch mittels send übertragen. Allerdings mußt du ausschließen, daß dabei im datenstrom steuerzeichen, die für die verwaltung der kommunikation notwendig sind mit übertragen werden.

    Wenn du das selbst machen willst könntest du zB. folgendes tun:
    1. die einzelnen bytes nehmen und den Ascii-Wert feststellen
    2. daraus eine zweistellige hex-zahl machen und übertragen
    3. auf der anderen seite die ganze sache umgekehrt und das file wieder zusammenbauen.

    Dabei wird zwar die doppelte datenmenge übertragen, aber es funxt sicher.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Es gibt in einem normalen Datenstrom keine Steuerzeichen.
    Das passiert höchstens bei Textstreams, also ganz sicher nicht unter Unix.

    Bei binäre Daten musst du halt am Anfang zuerst übertragen, wie lange sie sind, denn du kannst das Ende nicht wie bei einem String an \0 erkennen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ich habe so etwas bisher nur unter win zu laufen...aktuelle exe-files aus einer db.
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

  5. #5
    Registrierter Benutzer
    Registriert seit
    19.04.2003
    Beiträge
    194
    DANKE!
    war eigentlich eh logisch, hab ma nur dacht es gibt noch eine elegantere Methode !

    mfG
    Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

  6. #6
    Registrierter Benutzer
    Registriert seit
    22.05.2001
    Ort
    Emden
    Beiträge
    30
    Moinsen Leute,

    ich bastle momentan auch gerade etwas mit socket-Programmierung rum und wollte mich mal an das Versenden einer Datei machen.

    Habe viel gesucht, viel gelesen, wieder viel gelesen. Jedoch bekomme ich nix gebacken.

    Wie würde es denn beispielweise aussehen, wenn man eine Datei mittels send() verschickt und empfängt?

    Weiterhin habe ich was von sendfile() gelesen, jedoch erscheint mir das noch verwirrender.

    Grüße

    Torsten
    104 Tasten Maus.
    Tastatur mit Scrollrad

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.04.2003
    Beiträge
    194
    also ist nicht allzu schwer!

    Pseudocode:
    Code:
    char buf[MAX];  // buffer erstellen wo die daten der datei reinkommen
    
    
    // vorher noch datei öffnen mittels open()
    while (read(fd, (void*) buf, MAX) > 0) { 
    
      send(buf);
    }

    mfG
    Going to church does not make a person religious, nor does going to school make a person educated, any more than going to a garage makes a person a car.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •