Системный вызов для создания socket

Прототип системного вызова

#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);

Описание системного вызова

Системный вызов socket служит для создания виртуального коммуникационного узла процесса.

Параметр domain определяет семейство протоколов, в рамках которого будет осуществляться передача информации. Мы с вами рассмотрим только два таких семейства из нескольких существующих. Для них существуют предопределенные значения параметра:

AF_INET - для семейства протоколов TCP/IP
AF_UNIX
- для семейства внутренних протоколов UNIX, иначе называемого еще UNIX domain.

Параметр type определяет семантику обмена информацией: будет ли осуществляться связь через пакеты данных (datagrams), с помощью установления виртуального соединения или еще каким-либо способом. Мы будем пользоваться только двумя способами обмена информацией с предопределенными значениями для параметра type:

SOCK_STREAM - для связи с помощью установления виртуального соединения
SOCK_DGRAM
- для обмена информацией через пакеты данных.

Параметр protocol специфицирует конкретный протокол для выбранного семейства протоколов и способа обмена информацией. Он имеет значение только в том случае, когда таких протоколов существует несколько. В нашем случае семейство протоколов и тип обмена информацией определяют протокол однозначно. Поэтому этот параметр мы будем полагать равным 0.

В случае успешного завершения системный вызов возвращает файловый дескриптор (значение большее или равное 0), который будет использоваться как ссылка на созданный коммуникационный узел при всех дальнейших сетевых вызовах. При возникновении какой-либо ошибки возвращается отрицательное значение.