Nowe posty

xx Dystrybucja pod HP Omen (6)
Wczoraj o 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
Wczoraj o 21:08:23
lamp Problem z Linux Lite po instalacji (0)
Wczoraj o 19:50:30
xx Ile pingwinów? (1)
Wczoraj o 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: C, posix, unix socket  (Przeczytany 4117 razy)

jak0b

  • Gość
C, posix, unix socket
« dnia: 2007-04-21, 15:12:02 »
Aplikacja typu klient serwer.
Każdy klient po uruchomieniu łączy się z serwerem, to co otrzyma od serwera wypisuje na standardowe wyjscie. Dodatkowo przesyła do serwera wszystko co dostanie ze standardowego wejścia (kończy na Ctrl+D). Klient musi rozpoznać zerwania połaczenia z serwerem.
Serwer może przyjąć nie więcej niż 20 klientów (wogóle). Serwer po przyjściu kolejnych porcji danych od klienta wypisuje je na stdout i rozsyła je do innych kleintow. Serwer musi rozpoznać zerwanie połączenia z klientem.
Programy serwera i klientów są jednoprocesowe.
------
Moj problem polega na tym ze nie wiem jak umozliwic podlaczanie sie kolejnych klientow, a jednoczesnie czytanie z socketa kleinta(ow), bo albo wisze na accept albo na select, wiec jak wiszac na select odkryc ze kolejny klient chce sie podlaczyc zeby odpalic accept?? Przypominam ze programy maja byc jednoprocesowe, wiec odpada fork i chyba rowniez multi-threading.

jak0b

  • Gość
C, posix, unix socket
« Odpowiedź #1 dnia: 2007-04-21, 18:21:14 »
sam sobie odpowiem, moze sie komus przyda

oczywiscie nie czekamy na accept, tylko deskryptor socketa zwrocony nam przez fun. socket (program servera) rowniez dolaczamy do zestawu deskryptorow z ktorych oczekujemy danych do czytania i przekazujemy do funkcji select

teraz kiedy select powie ze cos jest do przeczytania z tego deskryptora socketu odpalamy accept i akceptujemy kolejne polaczenie

jesli chce ktos kod, niech da znac, to trzoche go uporzadkuje i wkleje tu

abusiek

  • Gość
C, posix, unix socket
« Odpowiedź #2 dnia: 2007-05-17, 19:41:16 »
Mi by sie kod bardzo przydal bo mam do napisania podobny program :)