ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
1894
1894
EMPFEHLEN
-
Hallo! Ich bitte euch um Hilfe. Ich möchte ein Objekt, das eine Datei als Attribut beinhaltet, über Socket verschicken. Momentan schicke ich separat die Datei und danach das Objekt selbst und bekomme folgende Fehlermeldung, nach dem die Datei verschickt wurde. Fehler: java.net.SocketException: Socket is closed
Objekt, das ich verscihcken möchte.
Code :1 2 3 4 5 6 7 8 9 10 11 12
public class Datei { private String name; private String typ; private File file; public Datei(String name, String typ, String filename) { this.name = name; this.typ = typ; this.file = new File(filename); } ........... }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
private boolean dateiSenden(Socket socket, File file) throws IOException { OutputStream os = socket.getOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(os); FileInputStream fis = new FileInputStream(file); BufferedInputStream bis = new BufferedInputStream(fis); int read = 0; long total = 0; byte[] data = new byte[8 * 1024]; // 8kB while (read != -1) { read = bis.read(data); if (read > 0) bos.write(data, 0, read); total += read; if (total % (10 * 1024 * 1024) == 0) } bos.flush(); bis.close(); bos.close(); return true; } private boolean objektSenden(Socket socket, Object obj) throws IOException, ClassNotFoundException { ObjectOutputStream oos = new ObjectOutputStream(socket .getOutputStream()); ObjectInputStream is = new ObjectInputStream(socket.getInputStream()); System.out.println("Server kontaktiert: " + socket.getInetAddress()); oos.writeObject(obj); System.out.println("\n MyObjekt-Objekt verschickt..."); return true; }
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
.... Datei mp3 = new Datei("01", "mp3", "01.mp3"); Socket sendSocket = null; try { sendSocket = new Socket("localhost", 9999); } catch (IOException e) { System.out.println("Exception in der Verbinden-Methode"); } dateiSenden(sendSocket, mp3.getFile()); System.out.println("Zeile zwischen \"Datei senden\" und \"Objekt sendne\"" objektSenden(sendSocket, mp3 ); ....
-
20.07.10 08:22 #2
Dein Objekt muss noch das Interface Serializeable implementieren, sonst kann es nicht verschickt werden.
Du müsstest bei deinen Sende-Methoden die close-Anweisungen der Streams wegmachen. Viele Streams schließen ihre Parameter-Streams gleich mit. Im Endeffekt wird also der Stream vom Socket geschlossen und geschlossene Streams können nicht wieder aufgemacht werden.
EDIT:
Achso, deine Idee mit der Datei ist ja nicht schlecht, aber wird nicht funktionieren. Ich bin selbst damit mal auf die Schnauze gefallen und haben mehrere Tage daran gesessen den Fehler zu finden bis ich merkte, dass das File-Objekt ja überhaupt keinen Inhalt besitzt. Ein File-Objekt beinhaltet nur formale Daten wie Pfad, Name, Größe, etc., aber nicht den eigentlichen Dateiinhalt. Wenn du die Datei verschicken willst, müsstest du diese einlesen und dann verschicken. Du könntest z.B. die Klasse File ableiten und in der abgeleiteten Klasse dann die Datei einlesen lassen. Ein Objekt von dieser neuen Klassen könntest du dann verschicken bzw. als Parameter an ein Datei-Objekt übergeben.
EDIT2:
Und das ist irgendwie das falsche Unterforum. Wär nicht schlecht, wenn das jemand verschieben könnte
Geändert von Akeshihiro (20.07.10 um 08:30 Uhr)
Man sagt, das Schwert eines Samurai sei seine Seele ...
Mit den Beiträgen ist es wie mit Schwertern: Je besser die Rohstoffe sind und je öfter man diese bearbeitet, desto hochwertiger sind sie.
Das Schmieden ist eine Kunst; Das Schreiben auch ;)
Ähnliche Themen
-
Dateiübertragung übers Netz
Von DarthShader im Forum JavaAntworten: 4Letzter Beitrag: 25.09.07, 19:43 -
Windows XP übers Netz
Von Philman im Forum Microsoft WindowsAntworten: 2Letzter Beitrag: 29.11.04, 12:30 -
Übers Netz senden
Von sra im Forum .NET ArchivAntworten: 2Letzter Beitrag: 08.11.04, 17:21 -
dateien übers netz auslesen
Von Hörnchenmeister im Forum JavaAntworten: 3Letzter Beitrag: 15.06.04, 17:02 -
Login übers Netz?
Von Freude im Forum PHPAntworten: 8Letzter Beitrag: 20.03.03, 11:01





Zitieren
Login




