S>Написана скоро как четверть века назад. S>Там про неблокирующие сокеты. S>Насколько она устарела? Наверное сейчас все иначе?
Ни насколько. То, что там написано — будет работать в том же виде, что и "четверть века назад".
Новое API расширяло и дополняло описанное для высоконагруженных серверов и тд. Если у тебя простая прикладная программа, периодически перезагружаемая, к которой будут конектится десятки-сотни клиентов то статья вполне жизнеспособна.
больше набросов шмыга! больше
найди еще статью про сломаный WSAPoll который пофиксили только в 10 винде
итд
так смотришь своими набросами
изучишь бесплатно весь нетворкинг
правда я такой пассивный вид изучения от шмыг уже давно понял
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, netch80, Вы писали:
N>>Там про все сокеты. Описанное будет работать, но много нового.
S>А что самое новое?
"Самое" сложно сказать, а так (для Unix систем):
1. Не упомянут SOCK_SEQPACKET. Очень удобен для взаимодействия по Unix сокетам. Используется также для SPX (если найдёте) и для one-to-many SCTP.
2. Надо упомянуть про struct sockaddr_storage, если есть задача хранить на выбор v4 или v6 адреса статикой.
3. Не упомянуты полезные современные флаги типа MSG_DONTWAIT, MSG_WAITALL, MSG_ERRQUEUE. (Вообще я бы предпочёл видеть флаг неблокирования свойством операции, а не сокета. MSG_DONTWAIT это обеспечивает, но только для сокетов.)
4. gethostbyname(), gethostbyaddr() устарели. Сейчас надо использовать getaddrinfo(), getnameinfo().
5. select() совсем старая. poll() лучше. Может, ppoll(), если важно ещё и контролировать сигналы. Про kqueue и epoll тут пока не вспоминаем, это специфика конкретных систем. Но они могут быть таки очень полезны в частных случаях.
6. Многие флаворы развивают свои варианты продвинутого AIO. io_uring в Linux, IOCP в Windows — там везде особые подходы.
Здравствуйте, flаt, Вы писали:
N>>6. Многие флаворы развивают свои варианты продвинутого AIO. io_uring в Linux, IOCP в Windows — там везде особые подходы.
F>IOCP устарели. F> Есть ещё AIO
Это что именно? Если overlapped, это ещё долго до IOCP.
F> и даже I/O Rings (почти как io_ring, но с мелкими отличиями)
Хм.
The current implementation of I/O rings only supports read operations
Наскоро просмотрел, вроде вменяемо.
S>Т.е. просто echo-сервис с мин. набором функционала, но с применением наиболее быстрых и современных API. S>Еще. Могли бы просвятить по поводу Fiber API — насколько оно в тему?
В линуксе штатно волокон нет. Отдельные библиотеки есть, но их надо рассматривать по отдельности.