klient/serwer - przesylanie danych

0

W jaki mozna przesłac (i odebrac) 'całościowo' obiekt danej klasy np. od klienta do serwera?

cos typu:

Obiekt ob = new Obiekt();

Socket s = new Socket("localhost", 34567);
OutputStream w = s.getOutputStream();
w.write(ob);
0

ObjectOutputStream oraz ObjectInputStream

http://72.5.124.55/j2se/1.4.2/docs/api/java/io/ObjectOutputStream.html
http://java.sun.com/j2se/1.4.2/docs/api/java/io/ObjectInputStream.html

Klasy musza implementować interfejs Serializable.

0

super, dzieki za pomoc:)

0

no właśnie... o co chodzi z tym Serializable?
z tego co pamiętam to ten interfejs nie ma żadnych metod, to co za sens ma jego implementowanie?

0

ok... chyba jednak ma metody i wszystko ma sens :)

0

The serialization interface has no methods or fields and serves only to identify the semantics of being serializable.

0

Jeszcze jedno pytanie:
miedzy aplikacjami sa przesylane obiekty roznych klas. Skad aplikacja ma wiedziec, obiekt jakiej klasy zostal przeslany? W przykladzie z javadoca z gory zalozone jest, ze bedzie przesylany int, String i Date. Co jesli bedzie istniała potrzeba przeslania obiektow w innej kolejnosci? Jak sobie z tym poradzic?

0

Mozna uprzedzic serwer, wysyłajac przed plikiem docelowym informacje czego ma się spodziewać

0

Dzieki za odpowiedz.
Przed kazdym wyslaniem obiektu bede wysylal char, ktory bedzie oznaczal np. pierwsza litere klasy albo int, gdzie kazda liczba bedzie oznaczala inna klase, potem wysle odpowieni obiekt. Cos takiego moze byc? Czy jest jakies bardziej 'eleganckie rozwiazanie'

0

Przeciez mechanizm serializacji sam doskonale wie co wczutuje? Bez zadnych hackow typu char czy int (bleh!). W strumieniu zakodowana jest klasa, i cala reszta.

0

no tak, ale w czasie trwania programu bede przesyłał różne klasy i nie jestem w stanie przewidziec w jakiej kolejnosci beda one przesylane, wiec skad mam wiedziec jaki obiekt mam przyjac w danym momencie?

0

Jak to nie jestes w stanie przewidziec? To Twoj program czy nie Twoj :>

0

zalozmy ze mam trzy rodzaje podejmowanych decyzji w kliencie, w zaleznosci od podjetej decyzji odpowiedni obiekt ma byc przeslany do serwera. Kolejnosc podejmowania decyzji jest dowolna, jak mam zatem to rozwiazac bez wczesniej wspomnianego sposobu z uprzednim przesylaniem inta?

0
::. napisał(a)

Przeciez mechanizm serializacji sam doskonale wie co wczutuje? Bez zadnych hackow typu char czy int (bleh!). W strumieniu zakodowana jest klasa, i cala reszta.

Tak, ale ObjectInputStream.readObject zwraca Object. Później jakiś haczyk musisz zrobić, żeby się dowiedzieć, co to jest. Chyba najszybsze jest instance of, chociaż może znacie inne, lepsze sposoby?

0

Mozna np bardziej obiektowo - napisac jakies wrappery, ktore bylyby uzywane polimorficznie, i instancje bys przesylal. Zalezy w sumie co robisz z tymi przesylanymi obiektami, ale fakt, macie racje ze czasami takie cos moze byc potrzebne.

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