Hallo
Ich habe eine Frage betreffend dem Senden von Bildern. Mein aufbau ist folgender:
Ich habe einen Server und einen Client. Diese kommunizieren mit InputStream und OutputStream. Nun möchte ich manchmal ein Bild übertragen (.jpg), also dachte ich ich kann einfach einen ObjectOutputSTream beim Client und einen ObjectInputStream beim Server öffnen, das Bild byteweise in den ObjectOutputStream schreiben und lese es dann aus dem ObjectInputStream.
Das Problem ist nun dass die Bilddaten beim Server auch im InputStream ankommen (ich sehe einfach komische Zeichen da ich die empfangenen zeichen am stdio ausgebe), aber den InputStream möchte ich nur für die kommunikation (befehle etc) verwenden. Ich habe es nun so gemacht dass der InputStream nicht ausgelesen wird, während ein Bildtransfer aktiv ist.
Meine Frage ist nun, ob es ein Problem ist den InputStream und den ObjectInputStream offen zu haben. Der Transfer endet einfach nie. Die Bilder sind zwischen 200KB und 400KB gross.
So sende ich das Bild:
So empfange ich das Bild:
Senden und Empfangen kommt nie zum ende. Gibt es eine Möglichkeit, den stand der übertragung zu sehen?
Wenn benötigt, kann ich weiter Infos posten.
[EDIT]
Ich habe gerade herausgefunden dass es hier hängt:
Ist es möglich dass es nicht möglich ist den ObjectOutputStream zu öffnen weil schon der InputStream offen ist? Das komische ist dass es erst eine Exception gibt wenn ich einen zweiten Client welcher mit dem Server verbunden ist trenne...
Wie auch immer, muss ich eine separate Verbindung aufbauen um das Bild zu übertragen?
mfg
Ich habe eine Frage betreffend dem Senden von Bildern. Mein aufbau ist folgender:
Ich habe einen Server und einen Client. Diese kommunizieren mit InputStream und OutputStream. Nun möchte ich manchmal ein Bild übertragen (.jpg), also dachte ich ich kann einfach einen ObjectOutputSTream beim Client und einen ObjectInputStream beim Server öffnen, das Bild byteweise in den ObjectOutputStream schreiben und lese es dann aus dem ObjectInputStream.
Das Problem ist nun dass die Bilddaten beim Server auch im InputStream ankommen (ich sehe einfach komische Zeichen da ich die empfangenen zeichen am stdio ausgebe), aber den InputStream möchte ich nur für die kommunikation (befehle etc) verwenden. Ich habe es nun so gemacht dass der InputStream nicht ausgelesen wird, während ein Bildtransfer aktiv ist.
Meine Frage ist nun, ob es ein Problem ist den InputStream und den ObjectInputStream offen zu haben. Der Transfer endet einfach nie. Die Bilder sind zwischen 200KB und 400KB gross.
So sende ich das Bild:
Java:
FileInputStream fis = new FileInputStream(imagepath);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
ObjectOutputStream oos = new ObjectOutputStream(client.getSocket().getOutputStream()) ;
oos.writeObject(buffer);
oos.close();
So empfange ich das Bild:
Java:
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
byte[] buffer = (byte[])ois.readObject();
ois.close();
FileOutputStream fos = new FileOutputStream("filename.jpg");
fos.write(buffer);
fos.close();
Senden und Empfangen kommt nie zum ende. Gibt es eine Möglichkeit, den stand der übertragung zu sehen?
Wenn benötigt, kann ich weiter Infos posten.
[EDIT]
Ich habe gerade herausgefunden dass es hier hängt:
Java:
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Wie auch immer, muss ich eine separate Verbindung aufbauen um das Bild zu übertragen?
mfg
Zuletzt bearbeitet: