Мы должны указать имя хоста сервера и имя сервиса, к которому необходимо подсоединиться. Хост может быть указан в виде IP адреса, а сервис может быть указан в виде целого номера порта. Подсоединение к стандартному эхо серверу (глава 1, раздел "Стандартные простые сервисы"), от sun к bsdi, отражает эхом все, что введено:
sun % sock bsdi echo a test line вводим строку a test line эхо сервер вернул копию ^D вводим символ конца файла, чтобы прекратить работу программы
sun % sock s 5555 работает как сервер, слушает порт 5555
Программа ожидает соединения от клиента и затем копирует стандартный ввод клиенту и копирует все, что получено от клиента, на стандартный вывод. В командной строке перед номером порта может стоять Internet адрес, чтобы указать, с какого локального интерфейса будет принято соединение:
sun % sock -s 140.252.13.33 5555 принимает соединения только по Ethernet
По умолчанию запрос на соединение принимается с любого локального интерфейса.
sun % sock -i -n12 -w4096 bsdi discard
запишет 12 буферов, каждый из которых по 4096 байт, на discard сервис хоста bsdi.
Несмотря на то, что в этих примерах использовался TCP (по умолчанию), с помощью опции -u можно использовать UDP.
Существует большое количество опций, что позволяет полностью контролировать функционирование программы. С помощью этих опций можно реализовать практически все, что было показано в тексте.
-b n
Воспринимает n как номер локального порта клиента. (По умолчанию используется динамический номер порта, назначенный системой клиента.)-c
Конвертирует символы новой строки, которые прочитаны из стандартного ввода, в символы возврата каретки и пропуска строки. Когда осуществляется чтение из сети, конвертирует последовательность <возврат каретки, пропуск строки> в единственный символ новой строки. Большинство Internet приложений работают с NVT ASCII (глава 26, раздел "Протокол Telnet"), где возврат каретки и пропуск строки используются для завершения каждой строки.-f a.b.c.d.p
Указывает удаленный IP адрес (a.b.c.d) и удаленный номер порта (p) для конечной точки UDP (глава 11, раздел "Сервер UDP").-h
Переводит TCP соединение в наполовину закрытое состояние (глава 18, раздел "Наполовину закрытый TCP"). То есть, соединение не разрывается при появлении в стандартном вводе символа конца файла. Вместо этого, соединение наполовину закрывается, при этом чтение из сети продолжается до тех пор, пока сам хост не закроет соединение.-i
Клиент источник или сервер приемник. Либо пишет данные в сеть (по умолчанию), либо, если используется с опцией -s, читает данные из сети. Опция -n указывает количество буферов, которые необходимо записать (или считать), опция -w указывает размер каждой записи, а опция -r указывает размер каждого чтения.-n n
Когда используется с опцией -i, n указывает количество буферов, которые необходимо считать или записать. По умолчанию n равно 1024.-p n
Указывает количество секунд, в течение которых необходимо выдержать паузу, перед каждым чтением или записью. Это может быть использовано в случае клиента источника (-i) или сервера приемника (-is), чтобы вставить задержку между каждым чтением или записью в сеть. Также существует опция -P, которая позволяет вставить паузу перед первым чтением или записью.-q n
Указывает размер очереди ожидания соединения для TCP сервера: разрешенное количество соединений, которое TCP может поставить в очередь для приложения (рисунок 18.23). По умолчанию равно 5.-r n
Когда используется с опциями -is, n определяет размер каждого чтения из сети. По умолчанию 1024 байта за одно чтение.-s
Функционирует как сервер, а не как клиент.-u
Использует UDP вместо TCP.-v
Отладочный режим. Печатает дополнительные подробности (как, например, динамически назначаемые номера портов клиента и сервера) в стандартный вывод ошибок.-w n
Когда используется с опцией -i, определяет размер каждой записи в сеть. По умолчанию 1024 байта за запись.-A
Включает опцию сокета SO_REUSEADDR. В случае TCP это позволяет процессу назначить самому себе номер порта, который является частью соединения, находящегося в состоянии ожидания 2MSL. В случае UDP, если система поддерживает групповую адресацию, это позволяет нескольким процессам использовать один и тот же локальный порт для получения широковещательных или групповых датаграмм.-B
Включает опцию сокета SO_BROADCAST, что позволяет UDP датаграммам быть отправленным на широковещательный IP адрес.-D
Включает опцию сокета SO_DEBUG. При этом выводится дополнительная отладочная информация, которую содержит ядро для этого TCP соединения (приложение A, раздел "Опция отладки сокета"). Эта информация может быть получена позже, с помощью запуска программы trpt(8).-E
Включает опцию сокета IP_RECVDSTADDR, если она поддерживается реализацией (глава 11, раздел "Сервер UDP"). Это предназначено для UDP серверов, чтобы печатать IP адреса назначения полученных UDP датаграмм.-F
Будет использоваться конкурентный TCP сервер. В этом случае сервер создает новый процесс с использованием программы fork для каждого соединения клиента.-K
Включает опцию TCP сокета SO_KEEPALIVE (глава 23).-L n
Устанавливает время задержки (опция сокета SO_LINGER) для конечной точки TCP в значение n. Время задержки равное 0 означает, что когда соединение закрывается, любые данные, оставшиеся в очереди для отправки, отбрасываются, а удаленному хосту посылается сброс (глава 18, раздел "Сегменты сброса (Reset)"). Положительное время задержки - это время (в сотых долях секунды), в течение которого соединение не закрывается, пока все данные не будут отправлены и подтверждены. Если, после закрытия сетевого соединения, не все данные были отправлены и подтверждены в момент истечения этого таймера, закрытие вернет ошибочный код возврата.-N
Устанавливает опцию сокета TCP_NODELAY, чтобы выключить алгоритм Нагла (глава 19, раздел "Алгоритм Нагла").-O n
Сообщает TCP серверу количество секунд, в течение которых тот должен выдержать паузу, перед приемом первого соединения от клиента.-P n
Указывает количество секунд, в течение которых необходимо выдержать паузу, перед тем как будет осуществлено первое чтение или запись в сеть. Это может быть использовано с сервером приемником (-is), чтобы осуществить задержку после приема запроса на соединение от клиента, однако перед тем, как осуществить первое чтение из сети. При использовании с клиентом источником или сервером приемником (-i), эта величина определяет промежуток времени между установлением соединения и перед первой записью в сеть. Опция -p определяет паузу между каждыми соседними чтениями или записями.-Q n
Указывает количество секунд для TCP клиента или сервера, в течение которых необходимо выдержать паузу, после получения символа конца файла с удаленного конца, перед тем как закрыть соединение со своей стороны.-R n
Устанавливает приемный буфер сокета (опция сокета SO_RCVBUF) в значение n. Это может непосредственно повлиять на размер приемного окна, объявляемого TCP. В случае UDP определяет максимальный размер UDP датаграммы, которая может быть принята.-S n
Устанавливает отправляющий буфер сокета (опция сокета SO_SNDBUF) в значение n. В случае UDP определяет максимальный размер UDP датаграммы, которая может быть отправлена.-U n
Переводит TCP в режим срочности после осуществления записи номер n в сеть. Для входа в режим срочности записывается один байт данных (глава 20, раздел "Режим срочности (Urgent Mode)").Назад
Компания | Услуги | Для клиентов | Библиотека | Галерея | Cофт | Линки
На главную