Serializacja w programie wielowątkowym Lista klientów online

0

Piszę komunikator, i serwer przechowuje w liście osoby zalogowane. Chcę teraz tą listę przekazywać co kilka sekund wszystkim klientom. Pomysł jest żeby wykorzystać serializację, ale z nią męczę się od tygodnia i udało mi się nawet w prostej "bezwątkowej" aplikacji to wykorzystać, ale tu jest problem.
Więc tak będę musiał wykorzystać timer (nigdy z tego nie korzystałem, w jaki sposób zrobić żeby wysyłał np co 10s) i wywyołwać metodę serializacji którą mam napisaną. Wydaję mi się, że będę musiał strumień przekazać w parametrze (hmm w tym timerze??) w jaki sposób uczynić żeby NetworkStream stream = klient.GetStream() przekazać??
W kliencie chyba musze w pętli while(true) czekać na deserializację. Tylko pojawia się problem bo tym strumieniem odbywa się komunikacja i jak wyłapać, co wiadomość a co do deserializacji. Myślałem, żeby może przed każdą wiadomością dodawać #cos# i później sprawdzać, ale nie wiem czy da radę bo odczytuję za pomocą Binaryreader i ReadString a chyba trzeba byłoby readbinary, więc co zrobić, a może macie jakieś lepsze rozwiązanie dla zrobienia listy online klientów.
Podczas uruchamiani klienta każdy się loguje i te loginy są, a raczej mają być wyświetlane...
Dzięki za każdą wskazówkę i pomoc :)

0

Piszę komunikator, i serwer przechowuje w liście osoby zalogowane. Chcę teraz tą listę przekazywać co kilka sekund wszystkim klientom.
po co całą listę? to się nie będzie skalować, gdy klientów będziesz miał 10000 ;-)

Listę przesyłać można na żądanie klienta (np. przy jego logowaniu się), a potem tylko zdarzenia kto się zalogował albo wylogował (i to też chyba nie wszystkim, bo nie sądzę żeby wszyscy mieli wszystkich na liście).

0

Nie myślę, o tym, że klientów będzie 10000 bo tak nie będzie xD, Założeniem było właśnie, żeby każdy każdego miał na liście, gdyby można samemu dodawać kontakt, sprawę dawno bym rozwiązał...
Listę chciałem przekazywać całą i miałem jakoś wyłapywać utracone połączenia, ale jako że to ma być po Lanie, oparte na TCP to chyba sobie odpuszcze utratę połączenia bo to raczej mało aczkolwiek prawdopodobne....
Planuję teraz zrobić, że każdemu po zalogowaniu prześle listę i wszystkim z listy tego co się zalogował...
Zastanawiam się jak wygląda kolejkowanie wiadomości, Czy jest to już w .Net, czy samemu się tym należy zająć, bo planowałem zrobić, że serwer wyśle do klienta wiadomość kontrolną i jak klient odbierze to będzie czekał na odebranie strumienia do deserializacji.
I jak to się będzie miało, jak będę miał załóżmy 30 osób podłączonych i do nich właśnie serwer będzie wysyłał list online osób i ktoś wyślę wiadomość ?? Zostanie przesłana zakolejkowana i przekazana dalej jak serwer zrobi co ma zrobić znaczy prześle listę, czy się sypnie ??

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