Эти функции Socket напрямую взаимодействуют с интернет-протоколом для отправки информации. По сравнению с потоками fopensock, они работают на относительно низком уровне. Обычно они инкапсулируют функции C и имеют схожие имена. Если у вас есть опыт программирования сокетов на C, вам будет очень удобно использовать эти функции. Мы не будем здесь подробно обсуждать программирование сокетов.
Используйте эти функции для решения сложных задач, которые не могут решить функции более высокого уровня. Используя эти функции, можно получить функции, аналогичные fopen. У вас может быть много способов реализовать функции сокета, например, демон Интернета, реализованный с использованием CLI (интерфейс командной строки) в PHP.
ресурс socket_accept (сокет ресурса)
На серверной стороне вашего скрипта используйте сокет_accept, чтобы принять входящее соединение. Сначала вы должны создать сокет, привязать его к имени и настроить на прослушивание порта. В блочном режиме сокет_accept сгенерирует уникальное принятое соединение. В неблокирующем режиме он возвращает false, если соединение не установлено. Кроме того, когда у вас есть новый ресурс сокета, вы можете выполнять операции чтения и записи.
Ниже мы продемонстрируем простой эхо-сервер. Он работает под управлением CLI (командной строки) и ожидает клиентских подключений через порт 12345.
сокет_accept
<?php
set_time_limit (0);
//создаем сокет
if(($socket =ocket_create(AF_INET, SOCK_STREAM, 0)) <0){
print("Не удалось создать сокет: " .ocket_strerror(socket_last_error()) . "n");
}
//привязываем его к заданному адресу и порту
if(($error =ocket_bind($socket, gethostbyname($_SERVER['HOSTNAME']), 12345)) < 0){
print("Не удалось привязать сокет: " .ocket_strerror(socket_last_error()) . "n");
}
if(($error =ocket_listen($socket, 5)) <0){
print("Не удалось вывести список на сокете: " .
сокет_strerror(socket_last_error()) "n");
}
в то время как (ИСТИНА) {
//ждём соединения
if(($accept = socket_accept($socket)) < 0){
print("Ошибка при чтении: " .ocket_strerror($message) . "n");
перерыв;
}
//отправляем приветственное сообщение
socket_write($accept, "Соединение принятоn");
print(date('Ymd H:i:s') . " СТАТУС: Соединение принятоn");
ob_flush();
в то время как (ИСТИНА) {
//читаем строку от клиента
if(FALSE === ($line =ocket_read($accept, 1024))){
print("Не удалось прочитать из сокета: " .
сокет_strerror(socket_last_error()) "n");
перерыв 2;
}
if( !@socket_write($accept , "ECHO: $line")){
print(date('Ymd H:i:s') . " СТАТУС: Соединение прерваноn");
перерыв;
}
print(date('Ymd H:i:s') . " READ: $line");
ob_flush();
}
сокет_закрыть ($ принять);
}
?>
boolocket_bind(сокет ресурса, строковый адрес, целочисленный порт)
Этот методocket_bind() привязывает ресурс сокета к адресу. Этот сокет должен быть ресурсом, возвращаемым функциейocket_create(). Этот адрес должен быть IP-адресом или путем к сокету Unix. Если это сокет, работающий в Интернете, вы также должны указать порт.
сокет_clear_error (сокет ресурса)
Эта функция может очищать ошибки для указанного сокета. Если параметры не указаны, все ошибки сокета будут очищены.
сокет_закрыть (сокет ресурса)
Функцияocket_close закрывает сокет и очищает ресурсы памяти, занимаемые сокетом.
логическое значение socket_connect (сокет ресурса, строковый адрес, целочисленный порт)
Эта функция создает клиентское соединение с портом или сокетом. Вы должны предоставить сокет, созданный с помощью функции socket_create. Параметр адреса должен быть путем к сокету или IP-адресом. В последнем случае за ним также должен следовать числовой номер порта.
Следующий пример демонстрирует процесс подключения к игровому серверу и получения информации по протоколу UDP.
Socket_connect
<?php
//создаем UDP-сокет
if(($socket =ocket_create(AF_INET, SOCK_DGRAM, SOL_UDP)) <0){
print("Не удалось создать сокет: " .
сокет_strerror(socket_last_error()) "n");
}
// тайм-аут через 5 секунд
socket_set_option($socket, SOL_SOCKET,
SO_RCVTIMEO, массив('sec'=>5,'usec'=>0));
//подключаемся к главному серверу RtCW
if(!socket_connect($socket, 'wolfmaster.idsoftware.com', 27950)){
print("Не удалось подключиться: " .
сокет_strerror(socket_last_error()) "n");
}
//отправляем запрос на серверы
socket_write($socket, "xFFxFFxFFxFFgetserversx00");
// получаем серверы
$сервер = массив();
while(FALSE !== ($line = @socket_read($socket, 4096))){
//анализируем данные
for($i=22; ($i+5) < strlen($line); $i += 7){
$ip = ord(substr($line, $i+1, 1)) '.' .
ord(substr($line, $i+2, 1)) '.' .
ord(substr($line, $i+3, 1)) '.' .
ord(substr($line, $i+4, 1));
$port = (ord(substr($line, $i+5, 1)) * 256) +
ord(substr($line, $i+6, 1));
$server[] = array('ip'=>$ip, 'port'=>$port);
}
}
print("<h1>" . count($server) . " Серверы</h1>n");
//проходим по серверам, получаем статус
foreach($server как $s){
print("<h1>{$s['ip']}:{$s['port']</h1>n");
//подключаемся к серверу RtCW
if(!socket_connect($socket, $s['ip'], $s['port'])){
print("<p>n" .
сокет_strerror(socket_last_error()) .
"n</p>n");
продолжать;
}
//отправляем запрос на статус
socket_write($socket, "xFFxFFxFFxFFgetstatusx00");
//получить статус с сервера
if(FALSE === ($line = @socket_read($socket, 1024))){
print("<p>n" .
сокет_strerror(socket_last_error()) .
"n</p>n");
продолжать;
}
$part = взорваться("n", $line);
//настройки находятся во второй строке, разделенной обратной косой чертой
$setting = взорваться("\", $part[1]);
print("<h2>Конфигурация</h2>n");
print("<p>n");
for($s=1; $s < count($setting); $s += 2){
print("tt{$setting[$s]} = {$setting[$s+1]}<br>n");
}
печать("</p>n");
print("<h2>Игроки</h2>n");
$lastPlayer = count($part) - 1;
for($p=2; $p < $lastPlayer; $p++){
$player = взорваться(" ", $part[$p]);
print("{$player[2]} Score={$player[0]} " .
"Ping={$player[1]}<br>n");
}
печать("</p>n");
ob_flush();
}
print("</table>n");
сокет_закрыть ($ сокет);
?>
ресурсocket_create(целочисленное семейство, целочисленный тип_сокета, целочисленный протокол)
socket_create инициализирует структуру сокета. Первый параметр — это семейство протоколов или домен. Вы должны использовать AF_INET для указания подключения к Интернету или AF_UNIX для указания соединения через сокет Unix. Второй параметр — это тип сокета, который вы можете выбрать из таблицы ниже. Обычно используйте SOCK_STREAM для использования протокола TCP и протокол UDP для использования SOCK_DGRAM. Третий параметр определяет протокол. Используйте SOL_TCP или SOL_UDP для соответствия протоколам TCP и UDP соответственно. Другой вариант заключается в том, что вы можете использовать функцию getprotobyname для обработки этого.
Описание константы типа сокета
SOCK_DGRAM автоматически адресует пакетный сокет
SOCK_RAW Интерфейс протокола RAW
SOCK_RDM надежный обмен сообщениями
SOCK_SEQPACKET последовательный сокет пакета данных
Потоковый сокет SOCK_STREAM
ресурс socket_create_listen (целочисленный порт, целочисленное отставание)
Использование Socket_create_listen — более простой метод, чем Socket_create, для создания сокета для прослушивания. Сгенерированный сокет будет прослушивать указанный порт, а необязательный параметр backlog предназначен для установки максимально разрешенного количества соединений.
логическое значениеocket_create_pair(целочисленное семейство, целочисленный тип_сокета, целочисленный протокол, дескрипторы массива)
Функцияocket_create_pair генерирует пару соединений сокетов. Прежде всего, первые три параметра — это описание сокета_create. Параметр handles — это массив, содержащий два ресурса сокета. Эта функция является инкапсуляцией функции Socketpair в C.
socket_create_pair
<?php
if(!socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $socket)){
print("Не удалось создать сокеты!n");
Выход();
}
$child = pcntl_fork();
если ($ребёнок == -1){
print("Не удалось выполнить форк!n");
Выход();
}
elseif($ребёнок > 0){
//родитель
сокет_закрыть ($ сокет [0]);
print("Родитель: ожидание сообщенияn");
$message = socket_read($socket[1], 1024, PHP_NORMAL_READ);
print("Родитель: получено сообщение--$messagen");
socket_write($socket[1], "Привет, дочерний процесс!n");
pcntl_waitpid($child, $status);
}еще{
//ребенок
сокет_закрыть ($ сокет [1]);
socket_write($socket[0], "Привет, родительский процесс!n");
print("Ребенок: ждёт сообщенияn");
$message = socket_read($socket[0], 1024, PHP_NORMAL_READ);
print("Ребенок: получил сообщение --$messagen");
выход (0);
}
?>
значение сокета_get_option (сокет ресурса, целочисленный уровень, целочисленный параметр)
Функцияocket_get_option возвращает добавленное значение, указанное в следующей таблице. Вы должны предоставить ресурс сокета, созданный функциейocket_create, и уровень. Полученный уровень сокета можно определить с помощью SOL_SOCKET. В качестве альтернативы используйте такой протокол, как SOL_TCP, для представления протокола TCP. Эти параметры могут быть установлены с помощью параметраocket_set_option.
сокет_get_options
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
print('SO_BROADCAST:' .
socket_get_option($socket, SOL_SOCKET,
SO_BROADCAST) . "<br>n");
print('SO_DEBUG: '.
socket_get_option($socket, SOL_SOCKET,
SO_DEBUG) . "<br>n");
print('SO_DONTROUTE:' .
socket_get_option($socket, SOL_SOCKET,
SO_DONTROUTE) . "<br>n");
print('SO_ERROR:' .
socket_get_option($socket, SOL_SOCKET,
ТАК_ОШИБКА) . "<br>n");
print('SO_KEEPALIVE:' .
socket_get_option($socket, SOL_SOCKET,
SO_KEEPALIVE) "<br>n");
print('SO_LINGER:' .
print_r(socket_get_option($socket, SOL_SOCKET,
ТАК_ЛИНГЕР), ИСТИНА) "<br>n");
print('SO_OOBINLINE: '.
socket_get_option($socket, SOL_SOCKET,
SO_OOBINLINE) "<br>n");
print('SO_RCVBUF: '.
socket_get_option($socket, SOL_SOCKET,
SO_RCVBUF) . "<br>n");
print('SO_RCVLOWAT: '.
socket_get_option($socket, SOL_SOCKET,
SO_RCVLOWAT) "<br>n");
print('SO_RCVTIMEO: '.
print_r(socket_get_option($socket, SOL_SOCKET,
SO_RCVTIMEO), ИСТИНА) "<br>n");
print('SO_REUSEADDR: '.
socket_get_option($socket, SOL_SOCKET,
SO_REUSEADDR) . "<br>n");
print('SO_SNDBUF: '.
socket_get_option($socket, SOL_SOCKET,
SO_SNDBUF) "<br>n");
print('SO_SNDLOWAT: '.
socket_get_option($socket, SOL_SOCKET,
SO_SNDLOWAT) "<br>n");
print('SO_SNDTIMEO: '.
print_r(socket_get_option($socket, SOL_SOCKET,
SO_SNDTIMEO), ИСТИНА) "<br>n");
print('SO_TYPE:' .
socket_get_option($socket, SOL_SOCKET,
SO_TYPE) . "<br>n");
?>
Описание опции таблицы опций сокетов
SO_BROADCAST позволяет автоматически адресованным сокетам отправлять и получать широковещательные пакеты.
SO_DEBUG включает функцию отладки сокетов. Только root имеет право включать эту опцию.
SO_DONTROUTE не принимает пакеты маршрутизации через шлюз
SO_ERROR Получает и очищает последнюю ошибку сокета. Возможно, этот параметр не требуется устанавливать.
SO_KEEPALIVE Открыть сообщение, которое остается активным.
SO_LINGER Socket_colse и Socket_shutdown прерывают отправку сообщения по тайм-ауту. Этот параметр использует массив, включающий два ключа l_onoff и l_linger.
SO_OOBINLINE вставляет данные непосредственно в приемный буфер.
SO_RCVBUF ограничивает максимальное количество байтов, которые можно буферизовать.
SO_RCVLOWAT задерживает принятие минимального количества данных
SO_RCVTIMEO Задерживает сообщение о тайм-ауте приема, используя два ключа массива: sec и usec.
SO_REUSEADDR позволяет повторно использовать локальные адреса.
SO_SNDBUF ограничивает максимальное количество байтов буфера отправки.
SO_SNDLOWAT задерживает отправку данных в этот протокол, принимая минимум байтов.
SO_SNDTIMEO Задерживает отчет об ошибках таймаута, когда отправитель проходит таймаут. Этот вариант использует ключи массива: sec и usec.
SO_TYPE Получает тип сокета. Возможно, эту опцию не нужно устанавливать.
логическое имя_сокета_getpeer(сокет ресурса, строковый адрес, целочисленный порт).
socket_getpeername получает адрес и порт из указанного соединения. Если соединение представляет собой сокет Unix, будет возвращен путь к файловой системе.
логическое имя_сокета_getsockname(сокет ресурса, строковый адрес, целочисленный порт)
socket_getsockname помещает имя в сокет и добавляет параметры адреса и порта. Возвращает false в случае неудачи.
(Я не особо разбираюсь в функциях socket_iovec_*, приведенных ниже, поэтому не решаюсь переводить их произвольно, поэтому сохраняю исходный текст)
логическое значениеocket_iovec_add(iovector ресурса, целочисленная длина)
Функция socket_iovec_add добавляет вектор ввода-вывода в массив разброса/сбора.
ресурс socket_iovec_alloc(число целых чисел,…)
Функция socket_iovec_alloc возвращает ресурс для обработки коллекции векторов ввода-вывода. Первый аргумент указывает количество векторов. Следующие аргументы определяют длину каждого вектора.
логическое значениеocket_iovec_delete(iovector ресурса, целочисленная позиция)
Функция socket_iovec_delete удаляет вектор ввода-вывода в заданной позиции.
строка socket_iovec_fetch (iovector ресурса, целочисленная позиция)
Функция socket_iovec_fetch возвращает значение указанного вектора в векторном ресурсе ввода-вывода.
логическое значениеocket_iovec_free(ресурс iovector)
Функция socket_iovec_free освобождает память, используемую для векторного ресурса ввода-вывода.
логическое значениеocket_iovec_set(iovector ресурса, целочисленная позиция, строковое значение)
Socket_iovec_set устанавливает значение вектора ввода-вывода в заданной позиции.
целое числоocket_last_error(сокет ресурса)
Функцияocket_last_error возвращает последнюю ошибку, сгенерированную любой функцией сокета в операции. Возможно, вы установили параметр сокета ресурса сокета для указанного соединения в приведенной выше функции. В следующей таблице перечислены возвращаемые коды ошибок. Вы также можете использовать функцию soclet_strerror для получения подробной информации об ошибках. Используйте функцию socket_clear_error для очистки ошибок сокета.
Описание констант таблицы кодов ошибок сокетов
Список параметров SOCKET_E2BIG слишком длинный
SOCKET_EACCES не имеет разрешения
Адрес SOCKET_EADDRINUSE уже используется.
SOCKET_EADDRNOTAVAIL не может разрешить запрошенный адрес.
Ошибка широковещательной передачи SOCKET_EADV (реклама)
SOCKET_EAFNOSUPPORT Протокол не поддерживается семейством адресов
Ресурс SOCKET_EAGAIN временно недоступен.
Операция SOCKET_EALREADY уже выполняется.
SOCKET_EBADE Неверный обмен
SOCKET_EBADF неправильный файловый дескриптор
Состояние ошибки файлового дескриптора SOCKET_EBADFD
Сообщение об ошибке SOCKET_EBADMSG
SOCKET_EBADR Неверное описание запроса
SOCKET_EBADRQC Неверный код запроса.
SOCKET_EBADSLT Неверное местоположение операции.
SOCKET_EBUSY Драйвер или ресурс занят.
Номер канала SOCKET_ECHRNG вне диапазона
SOCKET_ECOMM Ошибка связи при отправке
SOCKET_ECONNABORTED Прерывание трафика по программным причинам
SOCKET_ECONNREFUSED соединение отклонено
SOCKET_ECONNRESET Соединение сбрасывается по тому же сокету
SOCKET_EDESTADDRREQ должен требовать адрес назначения.
Превышена дисковая квота SOCKET_EDQUOT
Файл SOCKET_EEXIST уже существует.
SOCKET_EFAULT неправильный адрес
Хост SOCKET_EHOSTDOWN не работает
SOCKET_EHOSTUNREACH не перенаправляется на хост
SOCKET_EIDRM указывает, что идентификатор был удален.
Выполняется операция SOCKET_EINPROGRESS
Системный вызов SOCKET_EINTR заблокирован
SOCKET_EINVAL неверный параметр
Ошибка ввода-вывода SOCKET_EIO
Терминал передачи SOCKET_EISCONN подключен.
SOCKET_EISDIR — это каталог
SOCKET_EISNAM — файл заданного типа.
SOCKET_EL2HLT Уровень 2 прерван
SOCKET_EL2NSYNC Уровень 2 не синхронизирован
SOCKET_EL3HLT Уровень 3 прерван
SOCKET_EL3RST Уровень 3 сбрасывается
Номер соединения SOCKET_ELNRNG вне диапазона
SOCKET_ELOOP Слишком много уровней символических ссылок.
SOCKET_EMEDIUMTYPE Неправильный тип носителя (промежуточный тип)
SOCKET_EMFILE Слишком много открытых файлов.
SOCKET_EMLINK Слишком много подключений
Сообщение SOCKET_EMSGSIZE слишком длинное
SOCKET_EMULTIHOP Слишком много попыток.
SOCKET_ENAMETOOLONG имя файла слишком длинное
Сеть SOCKET_ENETDOWN не работает
SOCKET_ENETRESET Сеть была прервана, и соединение было сброшено.
SOCKET_ENETUNREACHСеть недоступна
SOCKET_ENFILE Слишком много открытых файлов в системе.
SOCKET_ENOANO Нет положительного полюса
SOCKET_ENOBUFS Нет свободного места в кэше
SOCKET_ENOCSI Структура CSI недоступна.
SOCKET_ENODATA Данные отсутствуют.
SOCKET_ENODEV Нет такого драйвера
SOCKET_ENOENT Нет такого файла или каталога.
SOCKET_ENOLCK Блокировка записи недоступна
SOCKET_ENOLINK подключение к существующей службе
SOCKET_ENOMEDIUM Носитель не найден
SOCKET_ENOMEM не может выделить память
SOCKET_ENOMSG Не указан тип сообщения.
Устройство SOCKET_ENONET отсутствует в сети
Протокол SOCKET_ENOPROTOOPT недоступен.
SOCKET_ENOSPC Нет места на диске
SOCKET_ENOSR превысил ресурс потока
Драйвер SOCKET_ENOSTR не является потоком
Функция SOCKET_ENOSYS не выполняется
Требуется драйвер блока SOCKET_ENOTBLK.
SOCKET_ENOTCONN Терминал передачи не подключен.
SOCKET_ENOTDIR не имеет каталога
Каталог SOCKET_ENOTEMPTY пуст.
SOCKET_ENOTSOCK Операция сокета без сокета
SOCKET_ENOTTY Несовместимый контроллер ввода-вывода
Имя SOCKET_ENOTUNIQ не уникально в сети.
SOCKET_ENXIO Нет такого драйвера или адреса.
Операция SOCKET_EOPNOTSUPP не поддерживается.
Операция SOCKET_EPERM не разрешена
SOCKET_EPFNOSUPPORT Семейство протоколов не поддерживается.
SOCKET_EPIPE не удалось выполнить канал
Ошибка протокола SOCKET_EPROTO
Протокол SOCKET_EPROTONOSUPPORT не поддерживается.
SOCKET_EPROTOTYPE Тип ошибки протокола на сокете.
Удаленный адрес SOCKET_EREMCHG изменился.
Объект SOCKET_EREMOTE является удаленным.
SOCKET_EREMOTEIO ошибка удаленного ввода-вывода
SOCKET_ERESTART Прерванный системный вызов будет перезапущен.
Файловая система SOCKET_EROFS доступна только для чтения.
SOCKET_ESHUTDOWN невозможно отправить прерывание конечной точки передачи.
SOCKET_ESOCKTNOSUPPORT Тип сокета не поддерживается
SOCKET_ESPIPE незаконный поиск
Ошибка потока потока SOCKET_ESTRPIPE
Таймер SOCKET_ETIME истекает
Тайм-аут соединения SOCKET_ETIMEDOUT
SOCKET_ETOOMANYREFS Слишком много подключений для объединения.
SOCKET_EUNATCH Невозможно подключить драйвер протокола.
SOCKET_EUSERS Слишком много пользователей.
Ресурс SOCKET_EWOULDBLOCK временно недоступен.
SOCKET_EXDEV Неверное междисковое соединение.
Обмен SOCKET_EXFULL является полным
логическим значениемocket_listen(сокет ресурса, целочисленный резерв)
Эта функция socket_listen ожидает соединений от клиента. Параметр backlog устанавливает максимальное количество очередей, которым разрешено ожидать соединений.
строка socket_read (сокет ресурса, целочисленная длина, целочисленный тип)
Функция socket_read считывает указанные байты из определенного сокета и возвращает false в случае ошибки. По умолчанию используется двоично-безопасный режим чтения. Вы можете изменить режим чтения, установив для параметра типа значение PHP_BINARY_READ извне. Вы также можете установить тип PHP_NORMAL_READ.
логическое значениеocket_readv(сокет ресурса, вектор ресурса)
Функция Socket_readv вставляет прочитанные данные в ресурс iovector.
целое число socket_recv (сокет ресурса, строковый буфер, целочисленная длина, целочисленные флаги)
Функция Socket_recv считывает данные и вставляет их в буфер. Параметр длины задает максимальное количество байтов для чтения, а параметр флага может использовать MSG_OOB или MSG_PEEK. Функция возвращает количество прочитанных байт.
целое число socket_recvfrom (сокет ресурса, строковый буфер, целочисленная длина, строковый хост, целочисленный порт)
Функция socket_frcvfrom считывает данные и вставляет их в кеш. Параметр «Длина» устанавливает максимальное количество байт, которое разрешено получить. Параметр flags может иметь значение MSG_OOB или MSG_PEEK. PHP устанавливает для параметров хоста и порта соответствующие значения, чтобы иметь возможность получать данные, отправленные с хоста.
логическое значениеocket_recvmsg(сокет ресурса, iovector ресурса, элемент управления массивом, целочисленная длина, целочисленные флаги, строковый хост, целочисленный порт)
Функция socket_recvmsg считывает данные из сокета и вставляет их в векторный ресурс ввода-вывода. Параметр управления настройками PHP представляет собой ассоциативный массив из трех элементов: cmsg_level, cmsg_type и cmsg_data. Параметр «Длина» — это параметр длины, прикрепленный к данным о получении данных. Параметр Flags устанавливает разрешенные значения и возвращаемые значения. На момент написания PHP не может выполнить все выходные константы. PHP устанавливает для параметров хоста и порта соответствующие значения, чтобы получать данные, отправленные с удаленного хоста.
(Функция Socket_slect не переведена, так как боюсь, что слова не передают смысл)
целое число сокет_селект (чтение массива, запись массива, исключение массива, целое число таймаут_секунд, целое число таймаут_микросекунды)
Функция socket_select ожидает изменений в сокетах. PHP отслеживает сокеты, указанные в массиве чтения, на предмет поступления новых данных. PHP отслеживает потоки, указанные в массиве записи, на предмет готовности принять больше данных. PHP отслеживает потоки, указанные в аргументе исключения. для ошибок, если количество секунд, указанное в аргументе timeout_секунды, прошло, функция возвращает значение. Используйте необязательный аргумент timeout_microсекунды, чтобы указать время ожидания менее 1 секунды.
Функция socket_select возвращает количество измененных сокетов или значение FALSE, если произошла ошибка. Если время ожидания истекло, эта функция также возвращает ноль. Она также изменяет данные массивы, чтобы они включали только те сокеты, которые изменились.
Если у вас нет сокетов определенного типа для наблюдения, вы можете передать пустой массив или переменную, для которой установлено значение NULL.
целое число socket_send (сокет ресурса, строковый буфер, целочисленная длина, целочисленные флаги)
Функция Socket_send записывает данные в буфер, а затем вставляет их в соединение. Вы должны указать максимальное количество записываемых байтов для буфера. Вы также можете установить для параметра flags пустое значение или одну из следующих комбинированных констант: MSG_DONTROUTE и MSG_OOB. Функция завершается и возвращает количество записанных байтов, в противном случае она возвращает false.
логическое значениеocket_sendmsg(сокет ресурса, iovector ресурса, целочисленные флаги, строковый адрес, целочисленный порт)
Socket_sendmsg пытается отправить данные в сокет. Подходит для розеток без установления соединения. Параметр Iovector — это ресурс, созданный функциейocket_iovec_alloc. Вы должны указать параметр flags как NULL, MSG_DONTROUTE, MSG_OOB или две комбинированные константы. Вам необходимо указать адрес и порт для интернет-запросов.
Функция Socket_sendmsg возвращает true при отправке данных, но нет никакой гарантии, что данные дойдут.
целое число сокет_sendto (сокет ресурса, строковый буфер, целочисленная длина, целочисленные флаги, строковый адрес, целочисленный порт)
Функция socket_sendto пытается записать данные в буфер и отправить их в сокет. Подходит для большинства сокетов без установления соединения. Вы должны указать флаги как: NULL, MSG_DONTROUTE, MSG_OOB или комбинацию двух констант. Также следует указать адрес и запрошенный порт.
Функция Socket_sendto возвращает true при отправке данных, но нет никакой гарантии, что данные поступят.
логическое значениеocket_set_block(сокет ресурса)
Функция socket_set_block переводит сокет в блочный режим, который является режимом по умолчанию. В блочном режиме операции ввода-вывода выполняются по завершенному запросу.
логическое значениеocket_set_nonblock(сокет ресурса)
Функция socket_set_nonblock устанавливает сокет, который будет вставлен в любой неблокирующий режим. В неблочном режиме операции ввода-вывода возвращаются немедленно, даже если данных нет.
логический сокет_set_option(сокет ресурса, целочисленный уровень, целочисленный параметр, целочисленное значение)
Функция socket_set_option устанавливает опцию для сокета. Параметр Level устанавливает константу, обозначающую уровень. Допустимые значения включают: SOL_SOCKET, SOL_TCP и SOL_UDP. Параметры параметра должны соответствовать константам в таблице параметров сокета выше.
логическое значение сокета_shutdown (сокет ресурса, целое число, как)
Функция socket_shutdown закрывает сокет для ввода-вывода. Установка значения 0 прекратит получение данных, установка значения 1 остановит отправку данных, а установка значения 2 остановит обе операции.
строка socket_strerror (целочисленная ошибка)
Функция socket_strerror возвращает номер ошибки и подробную информацию об ошибке.
целое число socket_write(сокет ресурса, строковый буфер, целочисленная длина)
Функция socket_write записывает данные в буфер, а затем выводит их в сокет. Вы можете указать параметр длины, чтобы указать максимальное количество байтов в буфере. Эта функция обычно более удобна, чем Socket_send.
логическое значениеocket_writev(сокет ресурса, вектор ресурса)
Функцияocket_writev записывает данные в сокет через векторы ввода-вывода.