Zum Inhalt springen

Dateiübertragung Server->Client über Socket


Empfohlene Beiträge

Geschrieben

Hallo,

ich habe eine C-Server laufen. Nun starte ich den Java-Client und fordere ein Datei(z.b. PDF) von dem Server an.

Dieser schickt es mir und ich schreibe es in eine Datei.

Die Größe des PDF's auf dem Server ist gleich der Größe des neuen PDF's auf dem Client.

Nun möchte ich das PDF öffnen, nun kommt eine Meldung das diese beschädigt ist und nicht repariert werden kann.

(Mit normalen Textdatein funktioniert es übrigens)

Ich vermute es liegt irgendwie an der Übertragung von nicht darstellbaren zeichen oder ähnlichem,

Ich verwende zum empfangen in Java: Socket.getinputstream.read dann hab ich ein byte[]-Array welche ich mittels dataoutputstream.write(byte[]) in die datei schreibe....hat jemand eine ahnung wo mir irgendwelche zeichen verloren gehen bzw. kaputt gehn(verloren geht ja nicht weil es die gleiche größe auf server und client ist)

bei irgendwelche umwandlungen innerhalb der stream-methoden?

Geschrieben
[...] welche ich mittels dataoutputstream.write(byte[]) in die datei schreibe [...]

Unter Umständen ist der DataOutputStream die falsche Wahl, kann das aber nicht mit Bestimmtheit sagen.

[...] bei irgendwelche umwandlungen innerhalb der stream-methoden?

Versuch es doch einfach mal mit einem FileOutputStream.

Hast du schonmal versucht mit Prüfsummen zu überprüfen, ob die beiden erzeugten Files übereinstimmen?

Gruß

Geschrieben (bearbeitet)

hallo,

den fileoutputstream habe ich au schon versucht. => kein erfolg

prüfsumme: hab mal die originalldatei und die neue datei in nem editor verglichen...sind teilweiße unterschiedlich(also prüfsumme ist auch unterschiedlich) :(

bin mit meinem latein echt am ende!

Bearbeitet von kale_1990
Geschrieben

Ich verwende zum empfangen in Java: Socket.getinputstream.read dann hab ich ein byte[]-Array welche ich mittels dataoutputstream.write(byte[]) in die datei schreibe

Hmm, poste bitte mal einen Code-Ausschnitt der zeigt, wie du die Daten liest und wie du Sie in die Datei schreibst.

Gruß

Geschrieben

Ich hatte das Problem auch schonmal. Bei mir lags daran, dass das was JAVA empfangen hat nicht das war was C gesendet hat. Im wesentlichen haben die Zeichen zwar gestimmt aber ich glaub wenn ein (char)11 gesendet wurde hatte es Probleme.

Aus Zeitgründen könnte ich das Problem nicht ordentlich suchen und habe mich dann dazu entschieden die Zeichen in hexadezimal umzurechnen also (char)11 wird zu "B0" und auf der anderen Seite wieder zurück zu rechnen. Hat damals ganz passabel funktioniert.

Im übrigen: soweit ich mich erinnern kann hat ein Kollege von mir dann mal mit irgendeinen Netzwerksniffer den Traffic angeschaut und festgestellt dass das was üäber Netz ankommt auch schon falsch ist (also der Fehler wahrscheinlich auf C-Seite liegt).

Geschrieben

Im übrigen: soweit ich mich erinnern kann hat ein Kollege von mir dann mal mit irgendeinen Netzwerksniffer den Traffic angeschaut und festgestellt dass das was üäber Netz ankommt auch schon falsch ist (also der Fehler wahrscheinlich auf C-Seite liegt).

@speedi: Du hattest recht, der Server hat den Fehler verursacht. :upps Es wurde scho falsch gesendet! Funktioniert nun einwandfrei! :)

Geschrieben (bearbeitet)
Wenn ja, lässt du uns dran teilhaben?

Würde mich jetzt auch mal interessieren. Wobei ich gern mal sehen würde, wie aus der Datei im C-Programm gelesen wird. Ich kann mir nicht vorstellen, dass da irgendetwas falsch übertragen werden soll, wenn man ausschließlich bytes liest und sendet.

Gruß

Bearbeitet von kein-tee
Geschrieben

hallo zusammen,

nein ich habe mir die funktion zum senden genau angeschaut und mir ist ein :

sprintf(buf,"%s",inhalt);

aufgefallen, dieses hat die bytes welche nicht lesbar sind natürlich verstümmelt...warum dies von dem programmierer dieser funktion gemacht wurde ist mir noch unklar...

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...