Устарела ли статья?
От: Shmj Ниоткуда  
Дата: 27.01.22 07:37
Оценка:
По мотивам этого вопроса: https://rsdn.org/forum/cpp.applied/8179628.flat
Автор: Shmj
Дата: 25.01.22


Решил таки вбить в гугле, нашлась статья: https://rsdn.org/article/unix/sockets.xml
Автор(ы): Александр Шаргин
Дата: 16.05.2001


Написана скоро как четверть века назад.

Там про неблокирующие сокеты.

Насколько она устарела? Наверное сейчас все иначе?
Re: Устарела ли статья?
От: m2l  
Дата: 27.01.22 09:47
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Решил таки вбить в гугле, нашлась статья: https://rsdn.org/article/unix/sockets.xml
Автор(ы): Александр Шаргин
Дата: 16.05.2001

S>Написана скоро как четверть века назад.
S>Там про неблокирующие сокеты.
S>Насколько она устарела? Наверное сейчас все иначе?

Ни насколько. То, что там написано — будет работать в том же виде, что и "четверть века назад".
Новое API расширяло и дополняло описанное для высоконагруженных серверов и тд. Если у тебя простая прикладная программа, периодически перезагружаемая, к которой будут конектится десятки-сотни клиентов то статья вполне жизнеспособна.
Re: Устарела ли статья?
От: reversecode google
Дата: 27.01.22 09:50
Оценка: +1 :))
больше набросов шмыга! больше
найди еще статью про сломаный WSAPoll который пофиксили только в 10 винде
итд
так смотришь своими набросами
изучишь бесплатно весь нетворкинг

правда я такой пассивный вид изучения от шмыг уже давно понял
Re[2]: Устарела ли статья?
От: Shmj Ниоткуда  
Дата: 27.01.22 09:58
Оценка:
Здравствуйте, m2l, Вы писали:

m2l>Новое API расширяло и дополняло описанное для высоконагруженных серверов и тд.


А что за новое API, позвольте осведомиться?
Re[3]: Устарела ли статья?
От: m2l  
Дата: 27.01.22 10:04
Оценка: 3 (1)
Здравствуйте, Shmj, Вы писали:

S>А что за новое API, позвольте осведомиться?


poll, epoll, etc...
Re: Устарела ли статья?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.01.22 05:09
Оценка:
Здравствуйте, Shmj, Вы писали:

S>По мотивам этого вопроса: https://rsdn.org/forum/cpp.applied/8179628.flat
Автор: Shmj
Дата: 25.01.22


S>Решил таки вбить в гугле, нашлась статья: https://rsdn.org/article/unix/sockets.xml
Автор(ы): Александр Шаргин
Дата: 16.05.2001


S>Написана скоро как четверть века назад.


S>Там про неблокирующие сокеты.


S>Насколько она устарела? Наверное сейчас все иначе?


Там про все сокеты. Описанное будет работать, но много нового.
The God is real, unless declared integer.
Re[2]: Устарела ли статья?
От: Shmj Ниоткуда  
Дата: 28.01.22 17:29
Оценка:
Здравствуйте, netch80, Вы писали:

N>Там про все сокеты. Описанное будет работать, но много нового.


А что самое новое?
Re[3]: Устарела ли статья?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 28.01.22 18:09
Оценка: 6 (1) +1
Здравствуйте, 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 — там везде особые подходы.
The God is real, unless declared integer.
Re[4]: Устарела ли статья?
От: Shmj Ниоткуда  
Дата: 28.01.22 21:56
Оценка:
Здравствуйте, netch80, Вы писали:

N>"Самое" сложно сказать, а так (для Unix систем):


Благодарю. Не попадался ли вам пример типа такого: http://www.khmere.com/freebsd_book/src/06/poll_socket.c.html

Т.е. просто echo-сервис с мин. набором функционала, но с применением наиболее быстрых и современных API.

Еще. Могли бы просвятить по поводу Fiber API — насколько оно в тему?
Re[4]: Устарела ли статья?
От: flаt  
Дата: 29.01.22 08:30
Оценка:
Здравствуйте, netch80, Вы писали:


N>6. Многие флаворы развивают свои варианты продвинутого AIO. io_uring в Linux, IOCP в Windows — там везде особые подходы.


IOCP устарели. Есть ещё AIO и даже I/O Rings (почти как io_ring, но с мелкими отличиями)
Re[5]: Устарела ли статья?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 29.01.22 12:17
Оценка: +1
Здравствуйте, 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


И таки да.

То есть нифига пока нет, спасибо. IOCP по-прежнему в работе.
The God is real, unless declared integer.
Re[5]: Устарела ли статья?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 29.01.22 12:23
Оценка:
Здравствуйте, Shmj, Вы писали:

N>>"Самое" сложно сказать, а так (для Unix систем):


S>Благодарю. Не попадался ли вам пример типа такого: http://www.khmere.com/freebsd_book/src/06/poll_socket.c.html


Первые ссылки с гугла по соответствующим словам:
https://github.com/onestraw/epoll-example
https://github.com/frevib/io_uring-echo-server

Наскоро просмотрел, вроде вменяемо.

S>Т.е. просто echo-сервис с мин. набором функционала, но с применением наиболее быстрых и современных API.

S>Еще. Могли бы просвятить по поводу Fiber API — насколько оно в тему?

В линуксе штатно волокон нет. Отдельные библиотеки есть, но их надо рассматривать по отдельности.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.