przez marsianinek » piątek, 27 sierpnia 2010, 11:35
To o czym pisze Darek jest jak najbardziej prawdziwe. Owszem klient jak i serwer mogą wysłać cokolwiek i kiedykolwiek chcą, ale wtedy nad tym nie zapanujesz, gdy np. klient o coś zapyta a w tym czasie serwer również, wtedy klient otrzymaną odpowiedź potraktuje jako odpowiedź na swoje pytanie i tu zaczyna się mętlik. Dlatego stosuje się protokoły w rodzaju client->serwer. Jeśli potrzebujesz aby serwer coś zainicjował to musisz zrobić dodatkowe pytanie od strony klienta w postaci: "Czy coś ode mnie chcesz?" i wysyłasz je np. co 30 sek, w zależności jaki czas reakcji potrzebujesz. Wtedy serwer odpowiada i mówi czego chce. Wiadomo, że może mu się uzbierać kilka spraw, więc jesteś zmuszony do zrealizowania sobie prostej kolejki komunikatów, które serwer sobie zbiera w ramach danego klienta. Druga sprawa to, jeśli twoja aplikacja potrzebuje aby to serwer częściej o coś prosił to możesz role odwrócić. To że klient łączy się do serwera nie wymusza aby tylko klient pytał a serwer odpowiadał, możesz cały mechanizm odwrócić i zrobić tak, że klient się tylko łączy a serwer nawija jako pierwszy a klient realizuje odpowiedzi - to już zależy wszystko od Ciebie.