socket_create
Создаёт сокет (конечную точку для обмена информацией)
&reftitle.description;
Socketfalsesocket_create
intdomain
inttype
intprotocol
Создаёт и возвращает экземпляр Socket, также называемый как конечная точка
обмена информацией. Типичное сетевое соединение состоит из двух сокетов, один из
которых выполняет роль клиента, а другой выполняет роль сервера.
&reftitle.parameters;
domain
Параметр domain определяет семейство протоколов,
используемых сокетами.
Доступные семейства адресов/протоколов
Семейство
Описание
AF_INET
Internet-протоколы IPv4. TCP и UDP - это стандартные протоколы
этого семейства протоколов.
AF_INET6
Internet-протоколы IPv6. TCP и UDP - это стандартные протоколы
этого семейства протоколов.
AF_UNIX
Семейство протоколов для локального обмена данными. Высокая эффективность и
низкие накладные расходы делают его отличным видом IPC (межпроцессного
взаимодействия).
type
Параметр type определяет тип обмена данными, который будет
использоваться сокетом.
Доступные типы сокетов
Тип
Описание
SOCK_STREAM
Обеспечивает последовательные, надёжные, полнодуплексные, байтовые потоки с установлением соединения.
Может поддерживаться механизм передачи внеполосных (out-of-band) данных.
Протокол TCP основан на этом типе сокетов.
SOCK_DGRAM
Поддерживает датаграммы (ненадёжные сообщения без установления соединения фиксированной максимальной длины).
Протокол UDP основан на этом типе сокетов.
SOCK_SEQPACKET
Предоставляет последовательную, надёжную, двунаправленную, базирующуюся на
соединениях передачу датаграмм с фиксированной максимальной длиной.
Потребитель должен читать весь пакет целиком при каждой итерации чтения.
SOCK_RAW
Предоставляет доступ по неподготовленному (raw) сетевому протоколу.
Это специальный тип сокета может быть использован для ручного создания
любого типа протокола. Стандартное использование
этого типа сокетов - выполнение запросов ICMP (таких как ping).
SOCK_RDM
Предоставляет надёжный уровень датаграм, не гарантирующий сохранение порядка.
Скорее всего, это семейство протоколов не реализовано в вашей операционной системе.
protocol
Параметр protocol указывает конкретный протокол в заданном
семействе протоколов domain, который будет использоваться
в обмене данными с созданным сокетом. Соответствующее значение может быть
получено по имени при помощи функции getprotobyname. Если
желаемый протокол TCP или UDP, то соответствующие константы
SOL_TCP и SOL_UDP
также могут быть использованы.
Стандартные протоколы
Название
Описание
icmp
ICMP (Internet Control Message Protocol, протокол межсетевых управляющих сообщений)
используется преимущественно шлюзами и хостами для сообщения об ошибках в
передаче датаграмм. Команда "ping" (присутствующая в большинстве современных
операционных систем) - это пример использования ICMP-протокола.
udp
UDP (User Datagram Protocol, протокол пользовательских датаграмм) - это протокол без
установления соединения, ненадёжный, протокол с фиксированной длиной записей.
Из-за этих аспектов, UDP требует минимального количества служебной информации.
tcp
TCP (The Transmission Control Protocol, протокол управления передачей) - это надёжный,
базирующийся на соединениях, потокоориентированный, полнодуплексный протокол.
TCP гарантирует, что все пакеты данных будут получены в том порядке, в котором они
были отправлены. Если какой-нибудь пакет каким-либо образом был утерян во время
передачи данных, TCP будет автоматически передавать пакет повторно до тех пор, пока
хост назначения не подтвердит этот пакет. В целях надёжности и производительности,
реализация протокола TCP сама выбирает подходящие границы октета нижележащего
уровня обмена датаграммами. Таким образом, приложения, использующие TCP,
должны предоставлять возможность частичной передачи записей.
&reftitle.returnvalues;
Функция socket_create возвращает экземпляр Socket в случае успешного выполнения,
или &false; в случае возникновения ошибки. Код ошибки может быть получен при помощи вызова
функции socket_last_error. Эта ошибка может быть передана
функции socket_strerror для получения текстового описания
ошибки.
&reftitle.errors;
Если указан неверный параметр domain или
type, функция socket_create
будет использовать по умолчанию значение AF_INET и
SOCK_STREAM соответственно, и дополнительно к этому выдаст
сообщение E_WARNING.
&reftitle.changelog;
&Version;
&Description;
8.0.0
В случае успешного выполнения функция возвращает экземпляр Socket;
ранее возвращался ресурс (resource).
&reftitle.seealso;
socket_accept
socket_bind
socket_connect
socket_listen
socket_last_error
socket_strerror