Аргерих Л. О языке РНР. Часть 3. Страница 73


тов, сначала создают объект сокета, означающий структуру данных, с помо­щью которой клиент может обращаться к соединению. После этого клиент пытается соединиться с сервером, используя IP-адрес и хорошо известный порт. На этапе соединения библиотека создает некий эфемерный порт, неви­димый клиенту. После того как соединение успешно установлено, клиент выполняет с сокетом операции чтения-записи. Закончив эти операции, он закрывает сокет.

Программа сервера в общем случае создает сокет и ассоциирует его с IP-ад- ресом хоста, на котором она выполняется, и его хорошо известным портом,

осуществляя свою привязку к этому адресу и порту. Затем она ждет на этом сокете входящих соединений, и когда поступает запрос соединения, он при­нимается, после чего с сокетом выполняются операции чтения и записи. При завершении работы сервера созланное соединение закрывается.

Сокеты и РНР

РНР предоставляет многочисленные функции, составляющие интерфейс со­кетов. В целом они совершенно аналогичны API сокетов, предоставляемым другими операционными системами и платформами, что облегчает перенос имеющегося кода в РНР. В данном разделе мы рассматриваем различные функции сокетов, которые предоставляет РНР. Чтобы работать с функци­ями сокетов, надо скомпилировать РНР с параметром --enable-sockets. API сокетов РНР находится в процессе развития, поэтому многие из этих функ­ций могут измениться. О текущем состоянии API сокетов можно узнать на http://www.php.net/manual/en/function.socket.php"> http://www.php.net/manual/en/function.socket.php .

В версии РНР 4.0.6 API сонетов все еще считается «экспериментальным». Большинство обсуждаемых в этом разделе функций в будущем может под­вергнуться изменению в отношении количества и типа аргументов, возвра­щаемого значения ; а в некоторых случаях даже самого имени функции. В большинстве своем это будут синтаксические изменения для прикладных программистов, однако не рекомендуется полагаться на эти интерфейсы при

создании кода для практического применения, пока на этой теме не осядет «пыль времени».1

Socket_create()

int socket_create(int domain, int type, int protocol)

Эта функция создает сокет, представляющий собой переменную, с помощью которой клиент осуществляет обмен данными. В качестве аргумента domain функция принимает AF_INET или AF UNIX. Если в качестве аргумента передано значение AF_INET, это указывает на использование семейства протоколов Ин­тернета, или TCP/IP. Этот аргумент обязателен, поскольку сокеты могут применяться и для других типов взаимодействия между процессами, напри­мер в доменных сокетах (domain sockets) UNIX, и тогда этот аргумент дол­жен иметь значение AF_UNIX.




Если вы решились сделать пластическую операцию, то должны довериться только лучшим специалистам. Если вы хотите попасть именно к такому специалисту, добро пожаловать на наш сайт по опросам он лучший пластический хирург в Армении. Более детальная информация на сайте.