Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Dateiübertragung Server->Client über Socket

Empfohlene Antworten

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?

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

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

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ß

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

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

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.