ТОП-10 популярных



Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...


Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

PHP. Операции ввода-вывода на сетевом уровне. Часть Пятая.


28-12-2009

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");
?>

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
PHP. Операции ввода-вывода на сетевом уровне. Часть Четвёртая. PHP. Операции ввода-вывода на сетевом уровне. Часть Шестая.