G
Guest
Gast
Mein Problem ist folgendes:
Ich kommuniziere mit einem Server über ObjectInput- und ObjectOutputStreams.
Den Code fuer das Paket vom Server koennt ihr hier sehen:
Je nachdem, welchen Status der Server dem Client übergibt, verarbeitet der Client die Serverpakete anders.
Das klappt auch bisher wunderbar. Bloss bei Status 106 (Wenn ich eine Datei vom Server runterladen möchte, und diese auf meinem lokalen Rechner gespeichert werden soll) habe ich Probleme. Ich möchte die Datei innerhalb dieses Objektes ServerPackage mitversenden.
Danach soll der Client das komplette ServerPackage entgegenehmen und die Datei abspeichern können.
Hier mal die Clientseite, die das ServerPackage wartet...
Ist es überhaupt möglich, eine komplette Datei über ein ObjectStream zu übergeben?! Performant soll das ganze sowieso nich sein, hauptsache ich kriege es hin! ;-)
MfG Lundner
Ich kommuniziere mit einem Server über ObjectInput- und ObjectOutputStreams.
Den Code fuer das Paket vom Server koennt ihr hier sehen:
Code:
package Packages;
import java.io.Serializable;
import MusicAdmin.*;
import java.io.File;
/***
* Nachrichten, die vom Server an den Client gesendet werden.
*
* @author lundner
*
*/
public class ServerPackage implements Serializable {
/***
* Playlist, die auf dem Server liegt
*/
public Tracklist tracklist;
/***
* File[] - Falls Musikdatei angefordert
*/
public File file = null;
/***
* Status des Servers
* -1 - unbekannter Status
* 0 - Client abmelden
* 100 - Tracklist angefordert
* 101 - Tracklist aktualisiert
* 102 - Tracklist geshuffelt
* 103 - Tracklist geleert
* 104 - Track geloescht (track ist cArray[1])
* 105 - Track wird gespielt (track ist cArray[1])
* 106 - Track wird uebertragen (track ist cArray[1]);
* 906 - Track nicht gefunden
*/
public int status;
/***
* Kommentare des Servers - z.b. unbekannter Befehl durch Client.
*/
public String comment;
/***
* Erzeugt ein Serverpackage mit Tracklist, Status und Kommando
* @param l
* @param stat
* @param com
*/
public ServerPackage(Tracklist l,int stat,String com){
tracklist = l;
status = stat;
comment = com;
}
public ServerPackage(Tracklist l,int stat,String com,File f){
tracklist = l;
status = stat;
comment = com;
file = f;
}
}
Je nachdem, welchen Status der Server dem Client übergibt, verarbeitet der Client die Serverpakete anders.
Das klappt auch bisher wunderbar. Bloss bei Status 106 (Wenn ich eine Datei vom Server runterladen möchte, und diese auf meinem lokalen Rechner gespeichert werden soll) habe ich Probleme. Ich möchte die Datei innerhalb dieses Objektes ServerPackage mitversenden.
Danach soll der Client das komplette ServerPackage entgegenehmen und die Datei abspeichern können.
Hier mal die Clientseite, die das ServerPackage wartet...
Code:
public void run(){
while(true){
try {
//Objektinputstream abfangen
ObjectInputStream is = new ObjectInputStream(connection.getServer().getInputStream());
//Package handlen
handlePackage(is);
} catch(IOException e1){
System.out.println("STAT: Server-Verbindung beendet");
System.exit(0);
}
}
}
Ist es überhaupt möglich, eine komplette Datei über ein ObjectStream zu übergeben?! Performant soll das ganze sowieso nich sein, hauptsache ich kriege es hin! ;-)
MfG Lundner