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
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 :)