LINUX.ORG.RU

История изменений

Исправление 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.

Ну, почти так 🤡