UNIX: разработка сетевых приложений
UNIX: разработка сетевых приложений читать книгу онлайн
Новое издание книги, посвященной созданию веб-серверов, клиент-серверных приложений или любого другого сетевого программного обеспечения в операционной системе UNIX, — классическое руководство по сетевым программным интерфейсам, в частности сокетам. Оно основано на трудах Уильяма Стивенса и полностью переработано и обновлено двумя ведущими экспертами по сетевому программированию. В книгу включено описание ключевых современных стандартов, реализаций и методов, она содержит большое количество иллюстрирующих примеров и может использоваться как учебник по программированию в сетях, так и в качестве справочника для опытных программистов.
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
solaris % <b>sock -s -u 8888 &</b> <i>запускаем первый</i>[1] 24051solaris % <b>sock -s -u 8888</b>can't bind local address: Address already in usesolaris % <b>sock -s -u -A 8888 &</b> <i>снова пробуем запустить второй с -A:</i><i> работает</i>solaris % <b>netstat -na | grep 8888</b> <i>мы видим дублированное связывание</i>*.8888 Idle* 8888 IdleВ этой системе задавать параметр
SO_REUSEADDRSO_REUSEPORTSO_REUSEADDRmacosx % <b>sock -u -s -A 7777 &</b>[1] 17610macosx % <b>sock -u -s -A 7777</b>can't bind local address: Address already in useТогда пробуем использовать параметр
SO_REUSEPORTmacosx % <b>sock -u -s 8888 &</b>[1] 17612macosx % <b>sock -u -s -T 8888</b>can't bind local address: Address already in useНаконец, задаем параметр
SO_REUSEPORTmacosx % <b>sock -u -s -Т 9999 &</b>[1] 17614macosx % <b>sock -u -s -T 9999 &</b>[2] 17615macosx % <b>netstat -na | grep 9999</b>udp4 0 0 *.9999 *.*udp4 0 0 *.9999 *.*7.7. Этот параметр (
-dpingSO_DEBUGSO_DEBUG7.8. Временная диаграмма приведена на рис. Д.4.

Рис. Д.4. Взаимодействие алгоритма Нагла с задержанными сегментами ACK
7.9. Установка параметра сокета
TCP_NODELAYwrite
Рис Д.5. Предотвращение алгоритма Нагла путем установки параметра TCP_NODELAY
7.10. Как показано на рис. Д.6, преимущество данного решения состоит в уменьшении числа пакетов.

Рис. Д.6. Использование функции writev вместо параметра сокета TCP_NODELAY
7.11. В разделе 4.2.3.2 говорится: «задержка ДОЛЖНА быть меньше 0,5 с, а в потоке полноразмерных сегментов СЛЕДУЕТ использовать сегмент ACK по крайней мере для каждого второго сегмента». Беркли-реализации задерживают сегмент ACK не более, чем на 200 мс [128, с. 821].
7.12. Родительский процесс сервера в листинге 5.1 большую часть времени блокирован в вызове функции
acceptreadreadlineSO_KEEPALIVEETIMEDOUT7.13. Клиент, приведенный в листинге 5.4, большую часть времени блокирован вызовом функции
fgetsETIMEDOUTfgetsselect7.14. Этот клиент большую часть времени блокирован вызовом функции
selectETIMEDOUT7.15. Происходит обмен только двумя сегментами, а не четырьмя. Вероятность того, что таймеры двух систем будут строго синхронизированы, очень мала, следовательно, на одном конце соединения таймер проверки работоспособности сработает немного раньше, чем на другом. Первый из сработавших таймеров посылает проверочное сообщение, заставляя другой конец послать в ответ сегмент ACK. Но получение проверочного сообщения приводит к тому, что таймеру проверки работоспособности с более медленными часами будет присвоено новое значение — он сдвинется на 2 ч вперед.
7.16 Изначально в API сокетов не было функции
listensocketSO_ACCEPTCONNlistenГлава 8
8.1. Да. Функция
readrecvfromrecvfrom
