resource socket_create(integer family, integer socket_type, integer protocol)
Функция socket_create инициализирует оболочку, в пределах которой потом работают остальные функции, предназначенные для работы с сокетами. Первым аргументом является семейство протокола или домен. Для соединений, осуществляемых через Internet, этому аргументу задается значение AF_INET, а для соединений через сокеты Unix задается значение AF_Unix. Второй аргумент представляет собой тип сокета. Типы сокетов перечислены в табл. 10.4. Обычно в сценариях используются SOCK_STREAM для TCP и SOCK_DGRAM для UDP. Третий аргумент задает протокол. Для TPC и UDP используются SOL_TCP или SOL_UDP соответственно. Можно использовать функцию getprotobyname.
resource socket_create_listen(integer port, integer backlog)
Функция socket_create_listen используется как упрощенная альтернатива функции socket_create, если необходимо создать сокет для прослушивания. Созданный сокет будет прослушивать все имеющиеся интерфейсы заданного порта. Необязательный аргумент backlog задает максимальный размер очереди соединений.
boolean socket_create_pair(integer family, integer socket_type, integer protocol, array handles)
Функция socket_create_pair (листинг 10.12) создает пару подключенных соке-тов. Первые три аргумента полностью соответствуют аргументам функции socket_create. Аргумент handles настроен на массив с данными по двум ресурсам сокетов. Работа этой функции базируется на C-функцим socketpair.
value socket_get_option(resource socket, integer level, integer option)
Функция socket_get_option (листинг 10.13) возвращает значение одного из параметров, приведенных в табл. 10.5. При этом необходимо задавать значение дескриптора сокета, созданного функцией socket_create, и уровень (параметр level). Для получения значений на уровне сокета для аргумента level задается значение SOL_SOCKET, иначе для использования TCP-протокола указывается значение SOL_TCP. Эти значения можно установить с помощью функции socket_set_option.
Листинг 10.13. Функция socket_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, SO_ERROR) . "<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, SO_LINGER), TRUE) . "<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), TRUE) . "<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), TRUE) . "<br>n");
print('SO_TYPE: ' .
socket_get_option($socket, SOL_SOCKET, SO_TYPE) . "<br>n");
?>
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операции ввода-вывода на сетевом уровне. Часть Пятая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операции ввода-вывода на сетевом уровне. Часть Четвёртая. | PHP. Операции ввода-вывода на сетевом уровне. Часть Шестая. |