Jak już pisałem miesiąc lub dwa na tym forum, zacząłem przerabiać moją grę RPG na MMORGP. Klient działa w 100% (handel, chat, widać innych ludzi na planszy i co gadają, jak wyglądają, ich avatary itp). Ale jakoś nigdy nie bawiłem się w procesy i omijałem je szerokim łukiem ( teraz tego mocno żałuję). I sprawa jest następująca. Chciałbym zrobić kilkuprocesowy program-serwer. I mam następującą koncepcję:
void obsluga_klienta( int ConnID ){
* oczekuj na klienta
* jeśli listen zadziałało to uruchom proces oblsuga_klienta( pierwszy wolny ID jaki jest ) jeśli jest to klient numer MAX_CONN -1 jeśli nie, to powiedz mu, że serwer pełny i wyłącz proces.
pętla ->
* tutaj w pętli czytaj o co prosi serwer i odpowiadaj ( wysyłanie odpowiednich danych itp)
* w razie zerwania polaczenie to zamknij proces i zwolnij ID
<-
}
void proces_serwera(){
pętla ->
* jeśli nikogo nie ma (wszystkie ID są wolne) to
-> to uruchom proces oblsuga_klienta(0)
* i wszystkie inne funkcje związane z np ruchem potworków i znikaniem itemów z planszy
<-
}
main(){
* inicjalizacja serwera, jego secketów itd.
* uruchom proces serwera
}
I czy idę chociażby w dobrym kierunku ?
Chodzi mi głownie jak ustawić funkcję jako proces i jak ten proces z niego samego zamknąć. Ewentualnie jakie poprawki musiałbym wprowadzić ?
Z góry dziękuję.
Dodano po 1 [minuty]:
I raczej nie chodzi mi o robienie procesu okna, bo takowy jest tylko jeden chyba
void obsluga_klienta( int ConnID ){
* oczekuj na klienta
* jeśli listen zadziałało to uruchom proces oblsuga_klienta( pierwszy wolny ID jaki jest ) jeśli jest to klient numer MAX_CONN -1 jeśli nie, to powiedz mu, że serwer pełny i wyłącz proces.
pętla ->
* tutaj w pętli czytaj o co prosi serwer i odpowiadaj ( wysyłanie odpowiednich danych itp)
* w razie zerwania polaczenie to zamknij proces i zwolnij ID
<-
}
void proces_serwera(){
pętla ->
* jeśli nikogo nie ma (wszystkie ID są wolne) to
-> to uruchom proces oblsuga_klienta(0)
* i wszystkie inne funkcje związane z np ruchem potworków i znikaniem itemów z planszy
<-
}
main(){
* inicjalizacja serwera, jego secketów itd.
* uruchom proces serwera
}
I czy idę chociażby w dobrym kierunku ?
Chodzi mi głownie jak ustawić funkcję jako proces i jak ten proces z niego samego zamknąć. Ewentualnie jakie poprawki musiałbym wprowadzić ?
Z góry dziękuję.
Dodano po 1 [minuty]:
I raczej nie chodzi mi o robienie procesu okna, bo takowy jest tylko jeden chyba