В.3. Программа sock
В.3. Программа sock
Программа sock, написанная Уильямом Стивенсом, впервые появилась в книге [111], где широко использовалась для генерации специальных условий, большинство которых затем проверялось с помощью программы tcpdump. Удобство этой программы заключается в том, что она генерирует такое множество различных сценариев, что нет необходимости писать специальные тестовые программы.
В этой книге исходный код программы не приведен (более 2000 строк на языке С), но он находится в свободном доступе (см. предисловие).
Программа работает в одном из четырех режимов, и в каждом из них можно использовать либо протокол TCP, либо протокол UDP.
1. Клиент стандартного ввода и стандартного вывода (рис. В.1).
Рис. В.1. Клиент sock: стандартный ввод и стандартный вывод
В клиентском режиме все, что считывается из стандартного потока ввода, передается в сеть, а все, что получается из сети, записывается в стандартный поток вывода. Должны быть указаны IP-адрес сервера и номер порта, и в случае TCP выполняется активное открытие.
2. Сервер стандартного ввода и стандартного вывода. Этот режим аналогичен предыдущему, за исключением того, что программа связывает заранее известный порт со своим сокетом и в случае TCP осуществляется пассивное открытие.
3. Клиент-отправитель (рис. В.2).
Рис. В.2. Программа sock в качестве клиента-отправителя
Программа осуществляет фиксированное количество передач пакетов некоторого определенного размера в сеть.
4. Сервер-получатель (рис. В.3).
Рис. В.3. Программа sock в качестве сервера-получателя
Программа осуществляет фиксированное количество считываний из сети.
Эти четыре рабочих режима соответствуют следующим четырем командам:
sock [параметры] узел служба
sock [параметры] -s [узел] служба
sock [параметры] -i узел служба
sock [параметры] -is [узел] служба
где узел— это имя или IP-адрес узла, а служба — это имя или номер порта. В двух серверных режимах выполняется связывание с универсальным адресом, если не задан необязательный параметр узел.
Можно также определить около 40 параметров командной строки, запускающих дополнительные возможности программы. Здесь мы не будем подробно останавливаться на этих параметрах, отметим только, что можно использовать почти все параметры сокетов, упомянутые в главе 7. Запуск программы без аргументов выводит на экран краткое описание всех параметров:
-b n связывает n в качестве клиентского локального номера порта
-с конвертирует символ новой строки в CR/LF и наоборот
-f a.b.c.d.p удаленный IP-адрес = a.b.c.d, удаленный номер порта = р
-g a.b.c.d свободная маршрутизация
-h половинное закрытие TCP при получении EOF из стандартного потока ввода
-i отправка данных на сокет, прием данных с сокета (w/-s)
-j a.b.c.d присоединение к группе многоадресной передачи
-k осуществляет write или writev порциями
-l a.b.c.d.p клиентский локальный IP-адрес = a.b.c.d. локальный номер порта = р
-n n размер буфера для записи клиентом "рассылки" (по умолчанию 1024)
-о НЕ присоединять UDP-клиент
-р n время ожидания (в мс) перед каждым считыванием или записью (рассылка/прием)
-q n размер очереди на прослушиваемом сокете для сервера TCP
(по умолчанию 5)
-r n количество байтов за одну операцию считывания (read) для сервера "приема"
(по умолчанию 1024)
-s работает как сервер, а не как клиент
-u использовать UDP вместо TCP
-v подробный вывод
-w n количество байтов для каждой записи (write) клиента "рассылки"
(по умолчанию 1024)
-x n время (в ms) для SO_RCVTIMEO (получение тайм-аута)
-y n время (в ms) для SO_SNDTIMEO (отправка тайм-аута)
-A параметр SO_REUSEADDR
-B параметр SO_BROADCAST
-D параметр SO_DEBUG
-E параметр IP_RECVDSTADDR
-F порождение дочерних процессов (fork) после установления соединения
(параллельный TCP-сервер)
-G a.b.c.d жесткая маршрутизация
-H n параметр IP_TOS (16=min del, 8=max thru, 4=max rel, 2=min cost)
-I сигнал SIGIO
-J n параметр IP_TTL
-K параметр SO_KEEPALIVE
-L n параметр SO_LINGER, n = linger time
-N параметр TCP_NODELAY
-O n время (в мс) для ожидания после вызова listen, но перед первым приемом (accept)
-Р n время (в мс) перед первым считыванием или записью (рассылка/прием)
-Q n время (в мс) ожидания после получения FIN, но перед закрытием
-R n параметр SO_RCVBUF
-S n параметр SO_SNDBUF
-Т параметр SO_REUSEPORT
-U n войти в срочный режим, прежде чем записать число n (только для отправителя)
-V использовать writev() вместо write(): включает -k
-W игнорировать ошибки записи для клиента приема
-X n параметр TCP_MAXSEG (устанавливает MSS)
-Y параметр SO_DONTROUTE
-Z MSG_PEEK
-2 параметр IP_ONESBCAST (255.255.255.255) для широковещательной передачи
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Программа
Программа Программа – это последовательность машинных инструкций (системы команд, понятных процессору), предназначенная для выполнения определенной задачи. Как правило, программа оформлена в виде одного или нескольких исполняемых файлов, которые после установки
4.7.1. Программа tar
4.7.1. Программа tar У читателя, привыкшего к архиваторам типа arj, которые собирают файлы в единый архив и сразу "сжимают" их, может возникнуть вопрос "А зачем использовать две программы?” Все дело в том, что tar расшифровывается как Tape ARchiver, он не сжимает данные, а лишь объединяет
10.2. Программа rpm
10.2. Программа rpm Название этой программы (или команды) является аббревиатурой от Redhat Package Manager. Такая расшифровка дается в большинстве книг и руководств по Linux и кажется мне более правильной и логичной, хотя в главе 6 "The Official Red Hat Linux Reference Guide" говорится: "The RPM Package Manager (RPM), is an open
12.2.3 Программа gv
12.2.3 Программа gv Программа gv (или ghostview) разработана Иоганнесом Плассом (Johannes Plass) и предназначена для просмотра файлов формата PostScript и PDF (рис. 12.2).После ее запуска без указания имени файла основное окно программы будет пустым. Чтобы открыть какой-то файл, надо щелкнуть по
13.3.2 Программа ftp
13.3.2 Программа ftp Программа ftp - это пользовательский интерфейс к стандартному протоколу передачи файлов по Интернету - File Transfer Protocol. Программа позволяет передавать файлы на удаленный компьютер и получать файлы с удаленного компьютера. Однако, введя команду ftp, вы
2.6.2. Программа RPM
2.6.2. Программа RPM Установка программного обеспечения в дистрибутивах Red Hat и Mandrake производится с помощью программы rpm. RPM (red hat package manager) — это менеджер пакетов Red Hat. Несмотря на то, что в названии присутствует «Red Hat», он полностью предназначен работать как открытая пакетная
П1.1. Программа AVZ
П1.1. Программа AVZ Программа AVZ (Антивирус Зайцева) – очень полезная утилита, и не раз меня выручала еще со времен Windows XP. Тогда я использовал антивирус Касперского, который не умел работать в безопасном режиме. Получалось так – все, что пропустил основной антивирус, в
6. Программа обучения
6. Программа обучения Расскажите, что находится внутри продукта, как построено обучение, и покажите блоки тем, списки – пункты программы. «Вы узнаете три способа, как сделать то, семь секретов, как сделать это». Причем вы не только рассказываете, что внутри, но и то, что это
Программа Wink
Программа Wink Wink (http://www.debugmode.com/wink/) – это мощная и простая в работе программа, написанная с использованием библиотек wxWidgets. Wink не распространяется с открытым исходным кодом, но является свободной для персонального и делового использования. С ее помощью можно делать снимки
Программа
Программа Ниже приводится короткая программа, позволяющая узнавать номер кода символа даже в том случае, если на вашей машине не используется код ASCII. main( ) /* определяет номер кода символа */{ char ch; printf(" Введите, пожалуйста, символ . "); scanf(" %c", &ch); /* ввод
9.3. Программа apt-get
9.3. Программа apt-get Предположим, у вас есть пакет package.deb. При его установке обнаружилось, что он требует наличия пакета lib.deb, который у вас не установлен. Что ж, вы находите в Интернете отсутствующий пакет, устанавливаете его способом, описанным в разд. 9.2 (то есть применяя
20.3. Программа bum
20.3. Программа bum Ранее в Ubuntu имелась программа Службы (в программной группе Система | Администрирование), позволяющая включать/отключать системные сервисы. В современных версиях Ubuntu такой программы нет. Зато можно установить программу Boot-Up Manager, которая даже лучше, чем
4.5.1. Программа 1
4.5.1. Программа 1 Вначале нужно выбрать способ представления позиции на доске. Один из наиболее естественных способов — представить позицию в виде списка из восьми элементов, каждый из которых соответствует одному из ферзей. Каждый такой элемент будет описывать то поле
4.5.2. Программа 2
4.5.2. Программа 2 В соответствии с принятым в программе 1 представлением доски каждое решение имело вид[1/Y1, 2/Y2, 3/Y3, ..., 8/Y8]так как ферзи расставлялись попросту в последовательных вертикалях. Никакая информация не была бы потеряна, если бы X-координаты были пропущены. Поэтому
4.5.3. Программа 3
4.5.3. Программа 3 Наша третья программа для задачи о восьми ферзях опирается на следующие соображения. Каждый ферзь должен быть размещен на некотором поле, т.е. на некоторой вертикали, некоторой горизонтали, а также на пересечении каких-нибудь двух диагоналей. Для того,
Программа Nero Express Лучшая программа для записи дисков
Программа Nero Express Лучшая программа для записи дисков Записывать диски средствами Windows неинтересно. Во-первых, скучно, а во-вторых, вам недоступны какие-либо настройки записи, вы даже не можете указать скорость, не говоря уже о выборе формата диска, методе записи. Вот