рабочая тетрадь(3)
.pdf
Соединение с удаленными узлами через сокеты
Сетевые функции
Сокеты (sockets) позволяют осуществить доступ к используемым сетевым протоколам
Варианты использования:
Подключение к службе, для которой отсутствует соответствующая обёртка (file wrapper)
Осуществление действий, невозможных при использовании потоков, но возможных при использовании сетевых протоколов
$fp = fsockopen("www.site.ru", 80, $errno, $errstr, 30);
if (!$fp) {
echo $errstr . ($errno) . "<br />"; } else {
$out = "HEAD /file.html HTTP/1.1\r\n"; $out .= "Host: www.site.ru\r\n";
$out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
Лабораторная работа 5
Использование сокета
Упражнение 1: Создание универсальной функции открытия сокета
•В текстовом редакторе откройте файл C:\Users\Public\OpenServer\domains\localhost\xml-rpc-client.php
•В начале файла введите следующий текст:
function call_socket($remote_server, $remote_server_port,$remote_path, $request) { $sock = fsockopen($remote_server, $remote_server_port, $errno, $errstr, 30); if (!$sock) die("$errstr ($errno)\n");
$out = "POST $remote_path HTTP/1.1\r\n"; $out .= "User-Agent: PHPRPC/1.0\r\n"; $out .= "Host: $remote_server\r\n"; $out .= "Content-type: text/xml\r\n";
$out .= "Content-length: " . strlen($request) . "\r\n"; $out .= "Accept: */*\r\n\r\n";
$out .= "$request\r\n\r\n"; fputs($sock, $out);
$headers = "";
while ($str = trim(fgets($sock, 4096))) $headers .= "$str\n";
$data = "";
while (!feof($sock))
$data .= fgets($sock, 4096); fclose($sock);
return $data;
}
Упражнение 2: Использование сокетного соединения в XML-RPC-клиенте
•В начале функции make_request() введите следующий текст:
$retval = call_socket('mysite.local', 80, '/xml-rpc/xml-rpc-server.php', $request_xml);
•Закомментируйте весь код между комментариями /* НАЧАЛО ЗАПРОСА */ и /* КОНЕЦ ЗАПРОСА */
•Сохраните файл xml-rpc-client.php
•Запустите браузер
•Наберите в адресной строке браузера http://localhost/xml-rpc-client.php
•Убедитесь, что данные выводятся корректно
•Если есть ошибки, найдите их и исправьте
Получение имени хоста по IP-адресу
$hostname = gethostbyaddr('127.0.0.1');
Получение IP-адреса (адресов) по имени хоста
$ip = gethostbyname('www.example.com');
$ips = gethostbynamel('www.example.com');
Получение номера порта и имени службы
$port = getservbyname('http', 'tcp');
$service = getservbyport(80, 'tcp');
Получение DNS записей
$dns = dns_get_record('www.example.com');
$mx = getmxrr('www.example.com');
$exists = checkdnsrr('www.example.com');
Соединение с удаленными узлами через сокеты
Сетевые функции
Игорь Борисов http://igor-borisov.ru
Введение в графические форматы
Вопросы генерации графики на PHP 5
Использование расширения GD2
Базовые функции для работы с графикой
С помощью PHP можно генерировать изображения «на лету»
Библиотека GD2
http://www.boutell.com/gd/
Расширение php_gd2.dll
Поддерживаемые форматы
▪GIF (< 1.6 и > 2.0.28)
▪JPEG (все версии)
▪PNG (> 1.6)
<img src="create_image.php">
Создание изображения (256 цветов)
$im = imageCreate(500, 300);
Создание изображения (17 млн. цветов)
$im = imageCreateTrueColor(500, 300);
Генерация GIF-изображения
header('Content-Type: image/gif');
imageGif($im); //imageGif($im, 'test.gif');
Генерация PNG-изображения
imagePng($im); //imagePng($im, 'test.png');
Генерация JPEG-изображения
imageJpeg($im); //imageJpeg($im, '', 75);
