Programowanie C/UNIX deskryptory
Cześć mam taki problem do rozwiązania piszę serwer i klienta w c pod Linuxa. Założenie jest takie, że jest serwer i on obsluguje wielu klientow. Cos w stylu chata.
program ma dzialac tak:
Prosty system do rozmów konferencyjnych w sieci. W sieci jest uruchomiony serwer. Klienci podłączają się do niego (klientowi podajemy jawnie adres serwera). Serwer oczekuje na komunikaty od klientów, które następnie rozsyła do wszystkich podłączonych do siebie klientów. Protokół komunikacji ma umożliwiać odłączenie klienta na żądanie. Komunikacja za pomocą protokołu TCP.
i jest taki problem, zeby nie blokowac serwera robie to tak:
Serwer-> proces macierzysty
- czekam na polaczenie
- jezeli jest polaczenie tworze proces potomny forkiem
Serwer -> proces potomny (ten z forka)
- Odbieram dane jezeli naplywaja z serwera.
no i teraz chdozi o to ze w prcoesie macierzystym ciagle tworza sie nwoe deskryptory plikow, wiec kazdy proces potomny oblsugujacy nowego klienta otrzymuje tablice tych deskryptorow jednak, te prcoesy potomne ktore zostaly wczesneij utworzone nie maja "pelnej" tablicy deskryptorow... i teraz mam problem jak to obejsc :/ ?
Czy jest moze jakas metoda aby pobrac zaktualizowane deskryptory z procesu macierzystego ? z etgo co widzialem ogolnei na deskryptorach operuja funkcje dup i dup2 ale nie znalazlem sposobu aby mi pomogly...
Prosze o pomoc wiem ze troche zagmatwalem ale mma nadzieje, ze ktos zrozumie mnie :)