Sebaall
#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ś?
  • Najlepsze
  • Wszystkie komentarze
L.....l
L.....l
@Sebaall: Po linii wysylajacej obiekt w ManagerThread dodaj objOUT.reset();
L.....l
L.....l
@Sebaall: Musiałbyć podać więcej szczegółów. Implementacja serwera i klienta pomogłaby zdiagnozować problem. Klasa Management nie wygląda żeby mogła sprawić problem. Pzdr.
Sebaall
Sebaall Autor
0
@Legol: http://pastebin.com/9Aty3t3m , http://pastebin.com/KrXsFhMR - tak wygląda Manager. A tak wygląda wątek serwera odp. za komunikację z Managerem - http://pastebin.com/0RsFiJqR
L.....l
L.....l
@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?
Sebaall
Sebaall Autor
0
@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
Sebaall Autor
0
@Legol: http://cl.ly/301I0S3i1v00 tak będzie chyba najprościej - wszystkie 3 programy - serwer, manager i prosty klient, który tylko łączy się z serwerem
L.....l
L.....l
@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.
Sebaall
Sebaall Autor
0
@Legol:

1.Uruchaiam Serwer

2.Uruchamiam Managera, łączy się z serwerem, nic na razie nie
Sebaall
Sebaall Autor
0
@Legol: faktycznie :D dzięki wielkie!
L.....l
L.....l
@Sebaall: Tu masz wyjasnienie -> http://stackoverflow.com/questions/8089583/why-is-javas-object-stream-returning-the-same-object-each-time-i-call-readobjec Czlowiek kazdego dnia uczy sie mimo tylu lat pracy :D Pzdr i powodzenia.
L.....l
L.....l
@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.