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.
Objekt, das ich verscihcken möchte.
Code:
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:
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:
....
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 );
....