Java RMI - przesyłanie plików (np. exe, grafika, mp3)

0

Prosiłbym o wskazówkę od osób bardziej ogarniętych, jak ugryźć ten temat.

Próbowałem na wszelkie sposoby i nie wiem jak przesyłać pliki przy użyciu technologi RMI.

Przygotowałem program typu klient-serwer który działa prawidłowo. Kolejnym krokiem który chciałbym dodać (męczę się już 3 tydzień) jest możliwość przesyłania różnego rodzaju plików pomiędzy klientem ,a serwerem które następnie inny klient mógłby z tego serwera pobrać.

Próbowałem używać serializacji ale nie mam pojęcia jak ją ugryźć - nie wiem czy w postaci typu FILE przesyłać pliki (chociaż przecież FILE jest tylko uchwytem do pliku a nie wczytanym plikiem :() , może wczytywać do tablicy typu byte [] i dopiero to przesyłać (typ prosty) - ale tu pozostaje problem jak to wczytać. Przy wczytywaniu czegokolwiek innego niż tekst wyskakuje błąd typu - IOExtenction. :(

Będę wdzięczny za wszelką pomoc, bo może brnę w ślepą uliczkę i tak się nie da? [soczek]

0

Tak ogółem to z Google nie potrafisz korzystać. Bodajże pierwszy wynik: http://www.jguru.com/forums/view.jsp?EID=717009

Alen napisał(a)

Przy wczytywaniu czegokolwiek innego niż tekst wyskakuje błąd typu - IOExtenction. :(
że co?

0

Eh, wstyd mi bo jak głupi szukałem po polsku tego w googlach zamiast tak jak zazwyczaj łatwiej po angielsku. [glowa]

Z drugiej jednak strony wyraźnie napisałem że - nie mam problemu z przesyłaniem plików tekstowych - właśnie w podobny sposób jaki podano na stronie którą przytoczyłeś. Mój problem polega na przesyłaniu plików innych niż tekst - np. audio, achiwum, exe itd. - nie udaje mi się wczytać pliku, przetworzyć go na byte [] lub String.

Ale faktycznie spróbuje poszukać po angielsku czegoś.

p.s znalazłem i wiem już gdzie był mój błąd z wczytywaniem plików. Nie mniej Dzięki.

  try {
	         File plik = new File(nazwa);
	         byte buffer[] = new byte[(int)plik.length()];
	         BufferedInputStream tmp = new
	      BufferedInputStream(new FileInputStream(nazwa));
	         tmp.read(buffer,0,buffer.length);
	         tmp.close();
	} catch(Exception e){	         
	         e.printStackTrace();
	      }
0

Moze zarzuc kodem wczytujacym plik - bo to ze zawsze dotajesz ioexception zle swiadczy, cos zle robisz :d I przerabianie pliku binarnego (jak np mp3) na String jest prawie zawszxe zlym pomyslem.

0

EDIT: za późno.. tak to jest, jak się otworzy okno z tematem i wróci do niego za pół godziny

<font size="0">Przetworzyć plik na byte[], tzn przetworzyć słoik z miodem na miód?
Nie wiem w jaki sposób to robiłeś, ale Ci podpowiem...

		byte[] bytes = new byte[(int) file.length()];
		FileInputStream fis = new FileInputStream(file);
		fis.read(bytes);

Tylko w ten sposób ni myśl przesyłać dużych plików, bo pamięci Ci zabraknie...</span>

1 użytkowników online, w tym zalogowanych: 0, gości: 1