-
- Делал поделку на неблокирующих сокетах, в все в одном потоке IBAH(9406 знак., 26.04.2022 22:07)
- Спасибо! - Dingo(27.04.2022 07:49)
- "select" - это способ узнать статус сокета. Tyмблep(200 знак., 26.04.2022 20:55)
- Спасибо! С нулевым таймаутом - совсем неочевидно, "а что, так
можно?" - Dingo(27.04.2022 07:50)
- Да, можно. Tyмблep(884 знак., 27.04.2022 13:14)
- Спасибо! С нулевым таймаутом - совсем неочевидно, "а что, так
можно?" - Dingo(27.04.2022 07:50)
- Возьмите libuv и не кушайте моск. Создадите цикл обработки событий и асинхронно работайте с таким количеством клиентов, каких памяти хватит - lloyd(26.04.2022 13:16)
- Вот простой пример эхо тцп сервера. Количество параллельных сессий
задается в параметре tcp_server_create. Если не боитесь C++ и
cmake. framer(190 знак., 21.04.2022 09:46 - 09:54, ссылка)
- Любопытно, как вы сделали! Вызываете сначала 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)
- Вот за что люблю старый-добрый D5. В простейших случаях хватает
встроенных сетевых компонентов, в более закудрявленных - Indy... - Гyдвин(21.04.2022 07:29)
- Што? Хотелось бы попонятней. Upd: Delphi что ли? Indy - это кто?
Мне под железку надо сделать класс для встраивания в программу, и
там с++ без вариантов. "Персоналковый" программист сильно загружен. - Dingo(21.04.2022 07:41)
- Да Delphi. Indy - библиотека сетевых компонентов для Delphi и
C++Builder. Ты еще не сказал про ОС :) Если винда, то вариантов
много. Например OLE сервер на том-же Delphi для твоих плюсов. 20
лет таким извратом занимаюсь, ибо приходится совокуплять гребаный
1С... - Гyдвин(21.04.2022 08:21)
- Никсы... :-/ - Dingo(21.04.2022 09:52)
- Мысль про то, что готовую либу проще взять. Для плюсов, Boost::Asio например (да тыщщи их разных). Кстати, про язык можно было в первом посте упомянуть - тогда бы дельфей не предлагали. - xarcass_(21.04.2022 07:48, )
- Да Delphi. Indy - библиотека сетевых компонентов для Delphi и
C++Builder. Ты еще не сказал про ОС :) Если винда, то вариантов
много. Например OLE сервер на том-же Delphi для твоих плюсов. 20
лет таким извратом занимаюсь, ибо приходится совокуплять гребаный
1С... - Гyдвин(21.04.2022 08:21)
- Што? Хотелось бы попонятней. Upd: Delphi что ли? Indy - это кто?
Мне под железку надо сделать класс для встраивания в программу, и
там с++ без вариантов. "Персоналковый" программист сильно загружен. - Dingo(21.04.2022 07:41)
- Делал поделку на неблокирующих сокетах, в все в одном потоке IBAH(9406 знак., 26.04.2022 22:07)