Zum Inhalt springen

Eine Datei binär über eine Socketverbindung übertragen???? HÄ?


Net-srac

Empfohlene Beiträge

Hi freunde.Ich hab hier n mittelschweres Problem. Ich soll ein Programm schreiben, dass über eine Socketverbindung zu einem anderen Rechner ein Datenpaket überträgt (binär) Diese übertragung soll dann gemessen (Zeit) werden. Also die verbindung hab ich schon hergestellt. Daten kann ich auch schon übertragen, aber nur solche, die ich vorher in meinem Programm in ein Editfeld geschrieben habe. :P

Wie kann man den z.B. den Inhalt einer Datei übertragen? Muß man die vorher Zeile für Zeile in ein Array speichern? Oder gibts da eine Funktion, die einem die mühe abnimmt? :confused:

Ich hab keine Ahnung mehr, was ich machen soll?!

Very Thnx4Help

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie kann ich denn einen Dateiinhalt in einen CString speichern?

ich habs jetzt so gemacht.

char *InputString;

                FILE *MeineDatei;


                MeineDatei = fopen("C:\\calc.db", "r");


                while(!feof(MeineDatei))

                {

                        InputString = new char[255];

                        fgets(InputString, 255, MeineDatei);

                        m_strMessage = InputString;

                        delete InputString;

                }


                fclose(MeineDatei);  

Das ist mir aber zu wenig mit den 255 Zeichen. Hilft mir da ein CString weiter?

Wie krieg ich denn den Inhalt direkt in die m_strMessage? :confused:

Thnx4Help

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur ganz kurz zu dem Thema mit dem CString:

Um den Inhalt vom CString korrekt zu übergeben muß man die Funktion GetBufferSetLength() auf die Länge des Const Char Arrays setzen. Anscheinend kann ein CString mehrfach gesplittet sein. D.h. die ersten 100 Zeichen hier im Speicher die nächsten 100 sonstwo. Offensichtlich handelt es sich bei CStrings um verkettete Listen.

Ich habe das zwar selber noch nicht genau untersucht aber ich habe beim memcpy gemerkt, daß nur GetBufferSetLength()zum korrekten Ergebnis geführt hat.

Damit wird ein konstantes Array angelegt und der ganze CString rüberkopiert. So kann man dann richtig auf die einzelnen chars zugreifen (zum Beispiel mit dem Weiterreichen von Binärdaten aus einer Datei).

Natürlich könnte man auch die GetAt() oder []-Operatoren beim CString benutzen, aber dann könnte man ja die binärdaten gleich beim Auslesen direkt rüberschieben.

Auf jeden Fall kann man so mit Pointer auf CString-Inhalte arbeiten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also mal ne Anmerkung!

Um ne Datei einzulesen, würde ich nie irgendne Stringklasse verwenden, wozu auch?

das mit dem Array ist schon garnicht so schlecht. Aber wenn du groessere Dateien einfach nur einlesen willst, dann leg dir doch ein Array von 64000 oder mehr an und lies dann die Datei mit ner normalen read-Funktion (z.B. fread) ein. (achte aber darauf den Modus auf binär zu setzen)

Damit wär glaub ich auch deine erste Frage beantwortet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...