Операционные системы. Учебное пособие. Марапулец Ю.В. - 191 стр.

UptoLike

Составители: 

listen Переводит заданное гнездо в режим прослушивания
recv Читает данные из заданного гнезда
recvfrom Читает дейтаграмму и исходный адрес
select Определяет статус одного или нескольких гнезд
send Посылает данные в заданное (подключенное) гнездо
sendto Посылает данные по адресу назначения
setsockopt Устанавливает параметры гнезда
shutdown Запрещает передачу и/или прием данных через указанное гнездо
socket Создает гнездо, связанное с заданным провайдером транспорт-
ных услуг
Рассмотрим параметры основных функций. Для создания гнезда используется сис-
темный вызов socket() [1, 12].
s = socket(domain, type, protocol);
где domain - тип протокола. Для протокола IP используется параметр AF_INET (Internet
протоколы);
type - тип подключения. Используется три возможных типа:
Stream socket (SOCK_STREAM) - обеспечивает последовательный, надежный, ори-
ентированный на установление двусторонней связи поток байтов.
Datagram socket ( SOCK_DGRAM) - поддерживает двусторонний поток данных. Не
гарантируется, что этот поток будет последовательным, надежным, и что данные не
будут дублироваться. Важной характеристикой данного гнезда является то, что гра-
ницы записи данных предопределены.
Raw socket (SOCK_RAW) - обеспечивает возможность пользовательского доступа к
низлежащим коммуникационным протоколам, поддерживающим сокет-абстракции.
Такие гнезда обычно являются датаграм-ориентированными.
protocol - необязательный параметр, при использовании AF_INET принимает значение
0.
Функция socket создает конечную точку для коммуникаций и возвращает файло-
вый дескриптор, ссылающийся на гнездо, или -1 в случае ошибки. Данный дескриптор
используется в дальнейшем для установления связи.
Для создания гнезда типа stream с протоколом TCP, обеспечивающим коммуника-
ционную поддержку, вызов функции socket должен быть следующим:
s = socket(AF_INET, SOCK_STREAM, 0);
Гнездо создается без имени. Пока с гнездом не будет связано имя, удаленные про-
цессы не имеют возможности ссылаться на него и, следовательно, на данном гнезде не
может быть получено никаких сообщений. Коммуникационные процессы используют
для данных целей ассоциации. В Internet домене ассоциация складывается из локального
и удаленного адреса и из локального и удаленного порта. В большинстве доменов ассо-
циация должна быть уникальной.
В Internet домене связывание гнезда и имени может быть весьма сложным, но, к
счастью, обычно нет необходимости специально привязывать адрес и номер порта к
гнезду, так как функции connect и send автоматически свяжут данный socket с подходя-
щим адресом, если это не было сделано до их вызова.
Для связывания гнезда с адресом и номером порта используют системный вызов
bind:
193
listen                    Переводит заданное гнездо в режим прослушивания
recv                      Читает данные из заданного гнезда
recvfrom                  Читает дейтаграмму и исходный адрес
select                    Определяет статус одного или нескольких гнезд
send                      Посылает данные в заданное (подключенное) гнездо
sendto                    Посылает данные по адресу назначения
setsockopt                Устанавливает параметры гнезда
shutdown                  Запрещает передачу и/или прием данных через указанное гнездо
socket                    Создает гнездо, связанное с заданным провайдером транспорт-
                          ных услуг

    Рассмотрим параметры основных функций. Для создания гнезда используется сис-
темный вызов socket() [1, 12].

s = socket(domain, type, protocol);

где domain - тип протокола. Для протокола IP используется параметр AF_INET (Internet
протоколы);
type - тип подключения. Используется три возможных типа:
• Stream socket (SOCK_STREAM) - обеспечивает последовательный, надежный, ори-
    ентированный на установление двусторонней связи поток байтов.
• Datagram socket ( SOCK_DGRAM) - поддерживает двусторонний поток данных. Не
    гарантируется, что этот поток будет последовательным, надежным, и что данные не
    будут дублироваться. Важной характеристикой данного гнезда является то, что гра-
    ницы записи данных предопределены.
• Raw socket (SOCK_RAW) - обеспечивает возможность пользовательского доступа к
    низлежащим коммуникационным протоколам, поддерживающим сокет-абстракции.
    Такие гнезда обычно являются датаграм-ориентированными.
protocol - необязательный параметр, при использовании AF_INET принимает значение
0.
      Функция socket создает конечную точку для коммуникаций и возвращает файло-
вый дескриптор, ссылающийся на гнездо, или -1 в случае ошибки. Данный дескриптор
используется в дальнейшем для установления связи.
      Для создания гнезда типа stream с протоколом TCP, обеспечивающим коммуника-
ционную поддержку, вызов функции socket должен быть следующим:

s = socket(AF_INET, SOCK_STREAM, 0);

      Гнездо создается без имени. Пока с гнездом не будет связано имя, удаленные про-
цессы не имеют возможности ссылаться на него и, следовательно, на данном гнезде не
может быть получено никаких сообщений. Коммуникационные процессы используют
для данных целей ассоциации. В Internet домене ассоциация складывается из локального
и удаленного адреса и из локального и удаленного порта. В большинстве доменов ассо-
циация должна быть уникальной.
      В Internet домене связывание гнезда и имени может быть весьма сложным, но, к
счастью, обычно нет необходимости специально привязывать адрес и номер порта к
гнезду, так как функции connect и send автоматически свяжут данный socket с подходя-
щим адресом, если это не было сделано до их вызова.
      Для связывания гнезда с адресом и номером порта используют системный вызов
bind:


                                           193