Dateiübertragung über Socket funktioniert nicht richtig?

Schnelle objektorientierte, kompilierende Programmiersprache.
Zenerid
Beiträge: 38
Registriert: Do Feb 05, 2015 4:15 pm

Re: Dateiübertragung über Socket funktioniert nicht richtig?

Beitrag von Zenerid » Mi Mai 11, 2016 5:32 pm

Das habe ich auch schon öfters gehört. Glauben tue ich das auch wohl. Ich kenne auch ein paar Leute die Informatik studieren und die sagen mir dasselbe, wobei es da schon einmal hier und da auch wohl so Projekte oder "Praktikas" gibt, wo die irgendetwas realisieren sollen. Der größte Teil soll aber wohl Mathematik / Theorie sein und eher "wenig" Praxis.

Hmm .. das mit dem schreiben oder lesen habe ich aber hier und da gelsen, dass man das da wohl lieber so machen soll, einfach um auch sicher zu sein. Das soll dann wohl so wirklich "Bulletproof" sein, falls man dann doch noch einmal oder mehrere Male schreiben oder lesen muss.

Die Fehlermeldung bekomme ich in der Zeile hier:

Code: Alles auswählen

int bytes_written = write(sockfd, ptr, bytes_to_write);
Erst kommt dann dieser Fehler und dann bekomme ich von der Funktion write den Rückgabwert -1 zurück. Ich bin jetzt mehrmals über die Zeile mit dem Debugger und der Fehler trtitt immer da auf. Bei den meisten Dateien funktioniert es aber und das ist auch nur eine Bilddatei (png).

ich arbeite nur auf UNIX und um genau zu sein auf OpenSuse und ab an auch mal auf Ubuntu oder Fedora. Hauptsächlich aber auf OpenSuse. Öffnen tue ich die Datei ja auch noch, wie ich das weiter oben schon geschrieben habe.:

Code: Alles auswählen

int resource = open(path, O_RDONLY);
Vorher entferne ich natürlich noch die Sonderzeichen usw. und der Pfad zur Datei stimmt auch exakt. Die größe der Datei hole ich ja mit stat, also so:

Code: Alles auswählen

char file_size[7];
struct stat st;
memset(&st, 0, sizeof(st));

if(stat(path, &st) < 0) {
	return 0;
}

snprintf(file_size, sizeof(file_size), "%zd", st.st_size);
und dann übergebe ich diese, genau wie den Pfad nachher der Funktion. Stimmt damit etwas nicht oder mit dem öffner der Datei?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Dateiübertragung über Socket funktioniert nicht richtig?

Beitrag von Xin » Do Mai 12, 2016 11:15 am

Was sagt errno?

Dass es an einer einzigen Datei zuverlässig scheitert ist ja schonmal gut. Es gibt also einen validen Testfall.
Was passiert, wenn Du einfach mal in eine Datei schreibst statt auf den Socket, um zu gucken, wie weit er kommt!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten