История изменений
Исправление firkax, (текущая версия) :
Ну ладно, уговорил, select лучше не использовать (чего я и делаю последние годы, а файлик для упрощённой работы с сокетами написал больше 10 лет назад). Но всё-таки по поводу списка уточню:
Ты пишешь код на C и не знаешь других языков;
Достаточно «не хочешь».
Код должен работать под лялексом И вендой, последняя обязательно без WSL и прочих cygwin;
Тут согласен - цель тогда была именно такая - везде сходу компилироваться и работать без малейшей дополнительной возни. В качестве «везде» имелся msvc 97 (без WSAPoll разумеется) и разные версии gcc под линуксом и фрибсд.
Тебе абсолютно нельзя использовать сторонние библиотеки, даже самые простые;
Верно - это и была «самая простая библиотека» из одного .c файла который потом везде можно сувать. Собственно до сих пор пользуюсь (хоть и не всем что в нём было задумано, поскольку совместимость с виндой уже почти не использую), изредка что-то дописываю в него. вот ссылка
При этом при всём, к производительности требования вообще нулевые (но зачем тогда тут C?) и код может терять соединения без проблем;
Не совсем так. Если у нас ничего кроме селекта нет - то вне зависимости от требований к производительности придётся использовать его. Если есть poll - будет он. А C затем что любимый язык. Про потерю соединений не надо: во-первых, на системах с селектом вряд ли будет запускаться что-то требовательное к количеству коннектов. Во-вторых, некий лимит коннектов есть у всех, хотя бы по kern.maxfiles или как оно там называется, а вообще обычно и в приложении (например в том же nginx это 50-100% от worker_connections*num_workers, а то и меньше, потом он их тупо дропает). То есть если соединений слишком много то теряться они всё равно будут где угодно, вопрос только выборе адекватного порога.
Срать мимо стека и засирать всю память, после чего дохнуть в корку можно, к этому вопросов нет (ах, вот зачем тут C!);
Ну это вообще мимо - я уже кучу раз объяснял что никакой опасности для битья стека и вообще памяти нет, если правильно писать код.
За лишний ifdef тебя расстреляют, количество ifdef отмерено специальным комитетом и их хватает ровно на WSASetError/WSAGetError/errno, но не на poll/WSAPoll.
Ну, почти так 🤡
Исходная версия firkax, :
Ну ладно, уговорил, select лучше не использовать (чего я и делаю последние годы, а файлик для упрощённой работы с сокетами написал больше 10 лет назад). Но всё-таки по поводу списка уточню:
Ты пишешь код на C и не знаешь других языков;
Достаточно «не хочешь».
Код должен работать под лялексом И вендой, последняя обязательно без WSL и прочих cygwin;
Тут согласен - цель тогда была именно такая - везде сходу компилироваться и работать без малейшей дополнительной возни. В качестве «везде» имелся msvc 97 (без WSAPoll разумеется) и разные версии gcc под линуксом и фрибсд.
Тебе абсолютно нельзя использовать сторонние библиотеки, даже самые простые;
Верно - это и была «самая простая библиотека» из одного .c файла который потом везде можно сувать. Собственно до сих пор пользуюсь, изредка что-то описываю. вот ссылка
При этом при всём, к производительности требования вообще нулевые (но зачем тогда тут C?) и код может терять соединения без проблем;
Не совсем так. Если у нас ничего кроме селекта нет - то вне зависимости от требований к производительности придётся использовать его. Если есть poll - будет он. А C затем что любимый язык. Про потерю соединений не надо: во-первых, на системах с селектом вряд ли будет запускаться что-то требовательное к количеству коннектов. Во-вторых, некий лимит коннектов есть у всех, хотя бы по kern.maxfiles или как оно там называется, а вообще обычно и в приложении (например в том же nginx это 50-100% от worker_connections*num_workers, а то и меньше, потом он их тупо дропает). То есть если соединений слишком много то теряться они всё равно будут где угодно, вопрос только выборе адекватного порога.
Срать мимо стека и засирать всю память, после чего дохнуть в корку можно, к этому вопросов нет (ах, вот зачем тут C!);
Ну это вообще мимо - я уже кучу раз объяснял что никакой опасности для битья стека и вообще памяти нет, если правильно писать код.
За лишний ifdef тебя расстреляют, количество ifdef отмерено специальным комитетом и их хватает ровно на WSASetError/WSAGetError/errno, но не на poll/WSAPoll.
Ну, почти так 🤡