П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 4064 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 6717 раз(а).

Учебник HTML.
Просмотров 3688 раз(а).

Руководство по PHP5.
Просмотров 5958 раз(а).

Хостинг через призму DNS.
Просмотров 4766 раз(а).

Подборка текстов стандартных документов.
Просмотров 56212 раз(а).

Учебник PHP - Самоучитель
Просмотров 3654 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 8238 раз(а).

Внешние атаки...
Просмотров 4507 раз(а).

Учебник PHP.
Просмотров 3149 раз(а).

SSI в примерах.
Просмотров 156 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 7. Файловый ввод/вывод и файловая система

Открытие соединения через сокет

РНР не ограничивается взаимодействием с файлами и процессами — вы также можете устанавливать соединения через сокеты. Сокет(socket) представляет собой программную абстракцию, позволяющую устанавливать связь с различными службами другого компьютера.

fsockopen()

Функция fsockopen() устанавливает сокетное соединение с сервером в Интернете через протокол TCP или UDP.

Синтаксис функции fsockopen():


int fsockopen(string узел, int порт [, int код_ошибки [, string текст_ошибки [, int тайм-аут]]])

Необязательные параметры код_ошибки и текст_ошибки содержат информацию, которая будет выводиться в случае неудачи при подключении к серверу. Оба параметра должны передаваться по ссылке. Третий необязательный параметр, тайм-аут, задает продолжительность ожидания ответа от сервера(в секундах). В листинге 7.6 продемонстрировано применение функции fsockopen() для получения информации о сервере. Однако перед рассмотрением листинга 7.6 необходимо познакомиться еще с одной функцией — socket_set_blocking().

UDP(User Datagram Protocol) — коммуникационный протокол, не ориентированный на соединение.

socket_set_blocking()

Функция socket_set_b1ocking() позволяет установить контроль над тайм-аутом для операций с сервером:


socket_set_blocking(int манипулятор, boolean режим)

Параметр манипулятор задает открытый ранее сокет, а параметр режим выбирает режим, в который переключается сокет(TRUE для блокирующего режима, FALSE для неблокирующего режима). Пример использования функций fsockopen() и socket_set_blocking() приведен в листинге 7.6.

Листинг 7.6. Использование функции fsockopen() для получения информации о сервере

<?
function getthehost($host.$path) {

  // Открыть подключение к узлу
  $fp - fsockopen($host, 80, &$errno, &$errstr, 30);

  // Перейти в блокирующий режим
  socket_set_blocking($fp, 1),

  // Отправить заголовки
  fputs($fp,"GET $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n\r\n"); $x = 1;

  // Получить заголовки
  while($x < 10) :
    $headers = fgets($fp, 4096);
    print $headers;
    $x++;
  endwhile;

  // Закрыть манипулятор
  fclose($fp);

}

getthehost("www.apress.com", "/");
?>

В результате выполнения листинга 7.6 выводится следующий результат:

НТТР/1.1 200 OK Server: Microsoft-IIS/4.0 Content-location:
http://www.apress.com/0efault.htm Date: Sat. 19 Aug 2000 23:03:25 GMT
Content-Type: text/html Accept-Ranges: bytes Last-Modified: Wed. 19 Jul
2000 20:25:06 GMT ETag: "f0a61666dbff1bf1:34a5" Content-Length: 1311

pfsockopen()

Функция pfsockopen() представляет собой устойчивую(persistent) версию fsockopen(). Это означает, что соединение не будет автоматически разорвано по завершении сценария, в котором была вызвана функция.

Синтаксис функции pfsockopen():


int pfsockopen(string узел, int порт [, int код_ошибки [, string текст _ошибки [, int тайм-аут]]])

В зависимости от конкретных целей вашего приложения может оказаться удобнее использовать pfsockopen() вместо fsockopen().

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru