Unixowe sockety - poll

0

Mam do napisania serwer, który po udp będzie odbierał pakiety od klientów, a następnie rozsyłał je z jakąś dodatkową informacją do klientów którzy wysłali pakiet do nas określony czas temu. Mam użyc mechanizmu poll czyli multiplexing i/o i dodatkowo sockety mają być nieblokujące. Tutaj nie potrafie zrozumieć chyba działania poll po udp. Bo w TCP zrozumiałem, że system poll działa tak, że nie nasłuchujemy cały czas gniazd tylko pytamy się na którym deskryptorze coś się dzieje i jeśli coś się dzieje to wykonywana jest tam akacja. W udp deskryptorów nie ma, bo nie ma połączenia i dlatego nie wiem jak tu poll pomaga? Czy mam zapisywać po prostu w tablicy adresy ip klientów i po prostu do nich robić send_to? Wtedy po prostu nasluchuje na jednym deskryptorze, ale po co to robić skoro równie dobrze mógłbym nasłuchiwać gniazdo? Czy może mam utworzyć LICZBA_KLIENTÓW gniazd i po nich zrobic connect i wysylac po udp?

0

mozesz normalnie uzywac [e]poll z udp zeby dostawac notyfikacje.
wez pod uwage roznice w api (np accept, connect i listen maja sens tylko w wypadku tcp)

1

Coś mi się wydaje, że robimy to samo zadanie na studia :)

Jeśli dobrze rozumiem, poll służy tutaj do tego, żeby wysyłanie datagramów nie blokowało ich odbierania. Czyli czekasz na dwie możliwe sytuacje: (a) masz do odebrania jakiś datagram; (b) masz datagram zakolejkowany do wysłania i możesz to zrobić teraz, i ta operacja nie będzie blokować.

Ale gniazdo wystarczy jedno.

Mam nadzieję, że nie napisałem bzdur :)

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