Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по ОС.doc
Скачиваний:
50
Добавлен:
24.09.2019
Размер:
202.24 Кб
Скачать

44.Последовательность вызовов api клиентского гнезда.

Этот объект предназначен для установления связи с сервером. Точнее, с серверным сокетом, даже если этот сокет выполнен на другом языке программирования. Нахождение нужного сервера осуществляется в сети по его имени, либо IP-адресу. После установления соединения программа может взаимодействовать с сервером, а именно — посылать и принимать данные. Интересно то, что эти данные могут быть произвольного типа.

ClientType - Определяет тип клиента с позиций работы с потоками передачи/приема данных. Значение ctNonBlocking позволяет вести с сервером асинхронную работу, посредством операторов чтения/записи. Альтернативный вариант — ctBlocking устанавливает поток обмена данными с сервером, через который и ведется работа

Socket - Определяет объект типа TClientwinSocket, который и представляет программе все сокетные сервисы. Будет описан чуть позже

Active - Определяет — активно ли соединение

Address - Содержит IP-адрес сервера

Host - Содержит имя (DNS) сервера

Port - Определяет порт, на котором установлена служба, с которой требуется соединиться

Service - Определяет название службы, точнее — протокола высокого уровня (HTTP, FTP, POP), по которому будет вестись работа. Если используется собственный формат обмена данными, то поле можно оставлять пустым

45.Последовательность вызовов api дейтаграммного гнезда.

Дейтаграммное соединение используется для передачи отдельных пакетов, содержащих порции данных – дейтаграмм. Для дэйтаграмм не гарантируется доставка в том же порядке, в каком они были посланы. Вообще говоря, для них не гарантируется доставка вообще, надежность соединения в этом случае ниже, чем при установлении виртуального канала. Однако дейтаграммные соединения, как правило, более быстрые. Примером дейтаграммного соединения из реальной жизни может служить обычная почта: письма и посылки могут приходить адресату не в том порядке, в каком они были посланы, а некоторые из них могут и совсем пропадать. 

Функция IPXListenForPacket - предназначена для инициирования процесса приема пакетов из сети.

Функция IPXSendPacket - подготавливает блок ECB и связанный с ним заголовок пакета для передачи пакета по сети. Она сразу возвращает управление вызвавшей ее программе, не дожидаясь завершения процесса передачи пакета.

Функция IPXGetInternetworkAddress - с помощью этой функции программа может узнать сетевой адрес станции, на которой она сама работает.

46.Предназначение системного вызова socket().

прототип функции socket выглядит следующим образом:

#include <sys/types.h> #include <sys/socket.h>

int socket ( int donnain, int type, int protocol );

Эта функция создает для указанного пользователем домена гнездо заданного типа и с указанным протоколом.

Аргумент domain определяет правила именования гнезда и формат адреса, используемые в протоколе. Широко применяются такие домены, как AF UNIX (домен UNIX) и AF INET (Internet-домен).

Аргумент type задает тип гнезда. Возможные значения этого аргумента приведены ниже.

Тип гнезда

Смысл

SOCK STREAM

SOCK DGRAM

SOCK SEQPACKET

Сообщения передаются в виде упорядоченного двунаправленного потока байтов с высокой степенью надежности и предварительным установлением соединения

Межпроцессное взаимодействие обеспечивается с помощью дейтаграмм. Сообщения передаются быстро (как правило, без установления соединения), но с низкой степенью надежности

Двунаправленная последовательная высоконадежная передача сообщений фиксированной максимальной длины с предварительным установлением соединения

Аргумент protocol указывает конкретный протокол, который следует использовать с данным гнездом. Фактическое значение этого аргумента зависит от значения аргумента domain. Как правило, оно устанавливается в О, и ядро само выбирает для указанного домена соответствующий протокол.

В случае успешного выполнения рассматриваемая функция возвращает целочисленный дескриптор гнезда, а в случае неудачи возвращает -1. Отметим, что дескриптор гнезда - это то же самое, что и дескритггор файла; он занимает одну ячейку таблицы дескрипторов файлов в вызывающем процессе.