Wpis z mikrobloga

#java #programowanie

Mam dziwny problem. Piszę sobie komunikator internetowy. Jak na razie mam szkielet - podstawowy serwer itd. Ogólnie to serwer będzie działać na moim NAS (takie moje widzimisię) a dostęp do niego chcę zrealizować przez Manager. W tym celu, w momencie zmiany stanu (ilości podłączonych klientów przykładowo) serwer wysyła zserializowany obiekt Management zawierający kilka intowych pól - liczba podłączonych klientów itp. Manager go odbiera no i tu jest problem. Pierwsze odebranie jest ok, a potem nawet gdy dojdą nowi klienci to manager odbiera obiekt, ale wyświetla starą informację (serwer na pewno dobrze wysyła, bo mam podgląd co wysyła). Wcześniej wysyłałem serializacją Stringa i było ok, a teraz nie działa. Wygląda to tak, jakby problem był z samą klasą Management - http://pastebin.com/ibcAb02a Pomoże ktoś?
  • 11
@Sebaall: Ciężko tak zdiagnozować zwłaszcza ze jestem w autobusie. Jak dojadę do domu i nikt Ci tu nie odpowie to spróbuje sobie to uruchomić. Tylko musiałbyś wrzucić jeszcze klasę serwera. Sam jestem ciekaw wtf. Jak podłączasz się pierwszym klientem to jest 1 i jak rozumiem przy kolejnym kliencie dalej jest 1 czy jak?
@Legol: Uruchamiam serwer, podłączam klientów, uruchamiam Managera, dodaje kolejnego klienta, Manager otrzymuje obiekt klasy Management z poprawną ilością klientów. Odłączam/podłączam klienta, Manager otrzymuje obiekt klasy Management ale tak jakby niezmieniony, a wg podglądu na serwerze została wysłana poprawna informacja.
@Sebaall: Hehe jak sobie to zaczytalem i obczailem to dopiero zrozumialem jak Ty to robisz. Jednak zobaczyc kod a przeczytac opis slowny to niebo a ziemia. Dobra teraz mi napisz po kolei w krokach co robisz co sie wyswietla a co powinno.
@Legol:

1.Uruchaiam Serwer

2.Uruchamiam Managera, łączy się z serwerem, nic na razie nie dostaje.

3.Urchamiam Klienta, Serwer wysyła do Managera obiekt klasy Management z clients=1;

4.Dodaję kolejnego klienta, serwer wysyła do Managera tak jak poprzednio, tylko, że z clients=2;

5. Manager dostaje obiekt z clients=1, a powinien z 2. Wyświetla 1 zamiast 2
@Sebaall: Odnosnie jeszcze rozwiazania to proponowalbym do komunikacji miedzy procesami korzystac z tak zwanych DataTransferObject (DTO). Prostych obiektow bez metod z logika typu increase decrease,ktorych przy kazdym wyslaniu tworzylbys nowa instancje, zwlaszcza ze obiekt Management jest synchronizowany i dosc istotne jest zachowanie jego niezmiennosci.