-
- Любопытно, как вы сделали! Вызываете сначала select(), а потом по
событию уже читаете активный сокет accept() ! "А что, так можно
было?!" - Dingo(22.04.2022 06:44)
- Это стандартная модель. Select это диспетчер событий. Он слушает
события и в зависимости от типа события исполняет что надо. Поэтому
остальные операции не блокируют. В данном случае сначала появляется
событие что кто то стучит в socket а потом отрабатывается функция
accept. Проверка типа события if (FD_ISSET(master_socket,
&readfds)). Точно также если, что то пришло по сокету то
проверка другая для отработки read if (FD_ISSET( sd ,
&readfds)) . Если бы эти framer(102 знак., 22.04.2022 07:17, ссылка)
- В тех букварях, которые читал, стандартно accept() с ожиданием
установки соединения, и только потом на соединении уже ожидание с
помощью select(). Спасибо за пример по ссылке тоже. Подскажите,
вызов poll() нормально сейчас использовать? А то под Win та же ХР
не поддерживала пишут. Или лучше как новичку в теме использовать
старое-доброе? - Dingo(22.04.2022 09:46)
- Select и Poll работают почти так же. Select использует битовую маску и имеет ограничение до 1024 дескрипторов. Poll использует таблицу структур pollfd. Если надо, чтобы работало под Win вот файл из того же примера сервера для Win. Сделайте условную компиляцию в зависимости от системы. Это еще один плюс использования плюсов. framer(192 знак., 22.04.2022 10:47, ссылка, ссылка)
- В тех букварях, которые читал, стандартно accept() с ожиданием
установки соединения, и только потом на соединении уже ожидание с
помощью select(). Спасибо за пример по ссылке тоже. Подскажите,
вызов poll() нормально сейчас использовать? А то под Win та же ХР
не поддерживала пишут. Или лучше как новичку в теме использовать
старое-доброе? - Dingo(22.04.2022 09:46)
- Это стандартная модель. Select это диспетчер событий. Он слушает
события и в зависимости от типа события исполняет что надо. Поэтому
остальные операции не блокируют. В данном случае сначала появляется
событие что кто то стучит в socket а потом отрабатывается функция
accept. Проверка типа события if (FD_ISSET(master_socket,
&readfds)). Точно также если, что то пришло по сокету то
проверка другая для отработки read if (FD_ISSET( sd ,
&readfds)) . Если бы эти framer(102 знак., 22.04.2022 07:17, ссылка)
- Спасибо. Даже команды расписали, но в моём случае это лишнее. :-)
Чего их бояться - пользоваться умею, а вот идеологию ++ не понимаю. - Dingo(21.04.2022 09:54)
- Там использованы потоки и при линковке надо подключить библиотеку pthread. Ну здесь хороший пример абстрактного использования классов. Интерфейс привязан к тцп серверу а вот реализация, что читаем и что пишем уже в конкретной имплементации на примере session_impl. Если захотите что-то другое организовать то ничего не надо поправлять в сервере. на пример приветствие и отключение : framer(395 знак., 21.04.2022 10:13)
- Любопытно, как вы сделали! Вызываете сначала select(), а потом по
событию уже читаете активный сокет accept() ! "А что, так можно
было?!" - Dingo(22.04.2022 06:44)