Viper Napisano Styczeń 2, 2019 Autor Zgłoś Udostępnij Napisano Styczeń 2, 2019 CZe.. Mam pytanie.... W jaki sposob zrobic rozsylenie informacji do calej sieci (lokalnej) w momencie uruchomiania komunikatora??? Chodzi mi o to, zeby inne osoby widzialy ze jestem dostepny.. Albo jesli wydzielam serwer do ktorego klienci sie loguja - to jak rozeslac do wszystkich ze ktos jest dostepny / niedostepny?????? Z gory dziekuje za wszelka pomoc... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Freak Napisano Styczeń 3, 2019 Zgłoś Udostępnij Napisano Styczeń 3, 2019 Skoro robisz serwer do którego logują się klienci to przecież on zapamiętuje kto jest dostępny, a kto nie i może to rozesłać do wszystkich klientów. W jaki sposob zrobic rozsylenie informacji do calej sieci (lokalnej) Mozesz uzyc adresu 255.255.255.255 plus UDP. Jest to ograniczony broadcast, nie wyjdzie poza twoją sieć lokalną Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Styczeń 3, 2019 Zgłoś Udostępnij Napisano Styczeń 3, 2019 Skoro i tak bedzie mial serwer to nei widze sensu rozglaszanie sie broadcastem. Porostu kazdy kilent zna adres serwera to po wlaczeniu laczy sie z serwerem i po polaczeniu serwer automatycznie rozsyla jakas konkretna wiadomosc do innych dostepnych klientow. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Viper Napisano Styczeń 3, 2019 Autor Zgłoś Udostępnij Napisano Styczeń 3, 2019 No tak... Ale w jaki sposob rozeslac z serwera do wszystkich zalogowanych?????? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Nemo Napisano Styczeń 3, 2019 Zgłoś Udostępnij Napisano Styczeń 3, 2019 Po pierwsze uzywasz WinSOcket czy komponetów C++Bulidera?? Zreszta idea jest taka. W momecie gdy klient polaczy sie z serwerem to klient powinien wyslac paczke z potrzebnymi informacjami np z ksywka, swoj nr itp. Gdy serwer dostanie taka paczke sprawdza w bazie (np tablica struktur) czy taki klient o tym numerze isnieje jesli istnieje to wysyla teraz do wszystkich zalogowanych klientow (lub tylko tym ktorzy maja go dodanego do listy komunikatora) paczke z informacja ze ktos sie dolaczyl wraz z jego numerem. Jak sprawdzic czy jaksi klient jest zalogowany? Prosto - przeszukujesz swoja baze danych (np tablice) i sprawdzasz który klient jest zalogowany (bo przy kazdym zalogowaniu klienta, serwer powinien uaktualniac baze i zmieniac jakas wartosc ktora jest odpowiedzialna za to czy klient jest zalogowany czy nie, np BOOL Zalogowany; - jesli ta zmienna jest TRUE to jest zalogowany a jak nie to nie) i potem mozesz spokojnie wysylac paczki tylko do tego który jest zalogowqany czyli do tego który ma np zmienna Zalogowany ustawiona na TRUE. Aha i w tej strukturce najlepiej jeszcze przechowywac jaksi uchwyt do połączenia klienta. Walne tutaj taki troche pseudokod: typedef struct UZYTKOWNIK { Ksywka char[16]; nr: int; bool zalogowany; JakisUchyt; }; UZYTKOWNIK users[10]; UZYTKOWNIK user; [...] WM_ODBIERZ_PACZKE: bool UzytkownikOKej = FALSE; odczytaj_paczke(&user); for(int i=0; i<10; i++) if(user.nr==users[i].nr) { users[i].zalogowany = true; UzytkownikOKej = TRUE; break; } if(UzytkownikOKej) { for(i=0; i<10; i++) if(user.nr!=users[i].nr && users[i].zalogowany) WyslijPaczke(users[i].JakisUchwyt, JakasPaczkaZInformacjamiOZalogowaniuNowegoUsera); { } } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.