Zum Inhalt springen

Dateiübertragung Server->Client über Socket


kale_1990

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

[...] 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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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! :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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