kale_1990 Geschrieben 26. August 2008 Geschrieben 26. August 2008 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? Zitieren
kein-tee Geschrieben 26. August 2008 Geschrieben 26. August 2008 [...] 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ß Zitieren
kale_1990 Geschrieben 26. August 2008 Autor Geschrieben 26. August 2008 (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 26. August 2008 von kale_1990 Zitieren
kein-tee Geschrieben 26. August 2008 Geschrieben 26. August 2008 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ß Zitieren
speedi Geschrieben 26. August 2008 Geschrieben 26. August 2008 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). Zitieren
kale_1990 Geschrieben 27. August 2008 Autor Geschrieben 27. August 2008 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! Zitieren
speedi Geschrieben 29. August 2008 Geschrieben 29. August 2008 Hasst du es auch so hässlich gelöst wie ich damals oder hast du eine schönere Lösung gefunden? Wenn ja, lässt du uns dran teilhaben? Zitieren
kein-tee Geschrieben 29. August 2008 Geschrieben 29. August 2008 (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 29. August 2008 von kein-tee Zitieren
kale_1990 Geschrieben 1. September 2008 Autor Geschrieben 1. September 2008 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... Zitieren
Empfohlene Beiträge
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.