Avatar billede prom Nybegynder
20. maj 2002 - 14:30 Der er 5 kommentarer og
1 løsning

Filoverførelse med RMI

Jeg har etableret kontakt mellem min klient og min server ved hjælp af RMI.
Nu vil jeg sende en fil fra klient til server. Jeg har en FileInputStream in på klienten og en FileOutputStream out på serveren.

Hvordan kan jeg skrive fra in til out?

Prom
Avatar billede soelvpil Nybegynder
20. maj 2002 - 21:29 #1
Det kan du ikke.

Men hvorfor ikke åbne en inputstream på serveren og en outputstream på klienten, så burde der ikke være nogen problemer.
Avatar billede bumle90 Nybegynder
20. maj 2002 - 22:09 #2
øhhhh input og outputstreams i RMI???
Har du ikke forstået konceptet med RMI. Remote Method Invocation. Dvs. du kan kommunikere med remote objekter som hvis de lå lokalt. Du er altså på et højere abstraktionsniveau end streams. Du overfører object som ved ganske almindelig parameteroverførsel når du først har fået adgang til dit remote objekt.
Avatar billede prom Nybegynder
21. maj 2002 - 08:04 #3
Hvordan overfører jeg så filer når jeg bruger RMI?

Jeg skal overføre en fil fra klienten til serveren. Der skal jeg jo have en InputStream på klienten og en OutputStream på serveren.

Det må da være muligt ved hjælp af RMI? Eller skal jeg bruge en webserver til filoverførelser?
Avatar billede soelvpil Nybegynder
22. maj 2002 - 19:54 #4
Hov, var ikke lige opmærksom på, at der stod rmi.

Det skulle i princippet være muligt at overføre en fil direkte via rmi, idet klassen File implementerer Serializable.

Så det er vel et forsøg værd, i det Remote Interface for rmi-serveren at have en metode, f.eks.

public void transfer(File file) throws RemoteException;

Jeg ved dog ikke lige, om det giver problemer, nu da filer jo ret naturligt er bundet til harddisken.
Avatar billede prom Nybegynder
22. maj 2002 - 23:01 #5
Det giver problemer. FileNotFoundException.

Filen ligger jo et andet fysisk sted, så det er ikke muligt at oprette en OutputStream på filen.

prom.
Avatar billede prom Nybegynder
22. maj 2002 - 23:05 #6
Det ser ikke ud til at der er andre der har gode forslag, men jeg har prøvet at læse filens bytes ind i et monsterarray.
Det virker.

File inputFile = new File("test.zip");
FileInputStream in = new FileInputStream(inputFile);
byte[] bytes = new byte[new Long(inputFile.length()).intValue()];
in.read(bytes);
in.close();
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester