Linux i tworzenie serwera ( komunikatora )

0

Witam,
Jak należy tworzyć poprawny serwer na linuksie ( coś jak gg czy tlen ), powinienem korzystać z funkcji listen i fork'ować całą masę procesów/wątków dla każdego z nich czy raczej oprzeć się na funkcji select?
A może jeszcze inaczej?
Dzieki za wszelkei odpowiedzi
Pozdrawiam

0

Zależy, ile połączeń będziesz obsługiwać i jak dużo operacji będziesz wykonywał dla każdego z nich. Proponuję aplikację zbudować tak, że w plikach konfiguracyjnych podasz limit połączeń obsługiwanych w select, a po przekroczeniu limitu przez zgłoszenie kolejnego klienta, będziesz fork'ować proces obsługi.

Jak chcesz uniknąć opóźnienia związanego z tworzeniem kolejnego procesu, trzymaj jeden oczekujący na przekroczenie limitu w zanadrzu.

0

W sumie całkiem ciekawy pomysł, mam jeszcze jedno pytanie, jeśli zrobię jeden proces nasłuchujący i akceptujący połączenia, następnie przekazujący numery otrzymanych gniazd do innego programu to czy te gniazda będą poprawnie działać?

0

Proces w wyniku operacji fork dziedziczy tablicę deskryptorów - zatem może odziedziczyć otwarty deskryptor gniazda. Przekazanie deskryptora dowolnemu innemu programowi nie zezwoli mu na skorzystanie z niego.

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