Информационные технологииStfw.Ru 🔍

Сетевые функции

Файлы и сети
🕛 01.11.2006, 13:29
ip2long

Конвертация строки адреса IPv4 в число

int ip21ong (string ip_address)

Возвращает четырехбайтовое численное представление адреса IP v4 из строки (числа, разделенные точками, например: «127.0.0.1»).

$ip = gethostbyname("wvjw.php.net");
// получить IP адрес хоста echo
"Следующие URL эквивалентны:<bг>\n".
"http://www.php.net/. http://" Sip.
"/. и http://" .ip21ong($ip)."/<br>\n":

См. также Iong2ip().

Iong2ip

Конвертация числа в строку адреса IP v4

string Iong2ip (int proper_address)

Возвращает строковое представление IP-адреса (в формате: «ааа. bbb.ccc.ddd») из числового значения.

См. также ip2long().

gethostbyaddr

Получение имени хоста, соответствующего адресу IP string gethostbyaddr (string ip_address)

В аргументе указывается адрес IP в строковом формате. При ошибке возвращается ip_address. Заметьте: большинству IP-адресов в Интернете соответствует несколько имен (одно из них: localhost).

echo gethostbyaddr("127.001");

См. также gethostbyname().

gethostbyname

Получение IP-адреса хоста

string gethostbyname (string hostname)

print gethostbyname ("localhost");
// выведет: 127.0.0.1

См. также gethostbyaddr().

gethostbynamel

Получение списка IP-адресов, принадлежащих хосту

array gethostbynamel (string hostname)

Функция используется вместо gethostbynamez(), когда хост hostname имеет несколько сетевых интерфейсов с разными адресами.

См. также: gethostbyname(), gethostbyaddr(), checkdnsrr(), getmxrr() и раздел named справочной системы man.

getprotobyname

Определение номера порта, используемого протоколом1

int getprotobyname (string name)

В системах Unix соответствие портов и протоколов указывается в файле /etc/protocols.

См. также getprotobynumber().

getprotobynumber

Определение протокола порта

string getprotobynumber (int number)

См. также getprotobyname().

getservbyname

Определение порта Интернет-службы

Int getservbyname (string service, string protocol)

Возвращает номер порта, использующийся службой service. (В системах Uni\ это соответствие портов и служб указывается в файле /etc/services) В аргументе protocol указывается тип протокола - TCP или UDP.

echo getservbyname ("HTTP"."TCP");
// может вывести- 80

См. также getservbyportt().

getservbyport

Определение Интернет-службы, использующей порт

string getservbyport (int port, string protocol)

В аргументе protocol указывается тип протокола - TCP или UDP.

echo getservbyport(21."TCP"):
// обычно выводит ftp
echo getservbyport(23."TCP").
// обычно выводит: telnet

См. также getservbyname().

checkdnsrr

Проверка записи DNS

int checkdnsrr (string host [, string type])

Отправляет запрос DNS-сервсру для поиска записей, имеющихся для хоста host. Возвращает TRUE, если были найдены записи типа type, или FALSE в противном случае, а также при ошибке.

Аргумент type может иметь одно из следующих значений: A, MX, NS, SO A, PTR, CNAME, ANY. По умолчанию (если аргумент не указан) его значение MX.

Аргумент host может указываться строкой IP-формата с разделением точками, либо быть именем хоста.

См. также: getmxrr(), gethostbyaddr(), gethostbyname(), gethostbynaroe() и раздел named справочной системы Unix man.

getmxrr

Получение MX записи для Интернет-хоста

int getmxrr (string hostname, array mxhosts [, array weight]) Инициирует поиск в БД DNS записи MX (почтовый сервер домена) для хоста hostname. Возвращает TRUE, если запись найдена; FALSE, если поиск прошел безуспешно.

Список записей MX заносится в массив mxhosts. Если указан массив weight, он заполняется дополнительной информацией о записях.

См. также: checkdnsrr(), gethostbyname(), gethostbynamel(), gethostbyaddr() и раздел named справочной системы Unix man.

Сетевая отладка PHP

debugger_off

Блокировка внутреннего отладчика РНР

int debugger_off(void):

Отладчик пока находится в стадии разработки (для РНР 4).

debugger_ on

Разрешение использования внутреннего отладчика РНР

int debugger_on (string address)

Подключает отладчик но адресу address (на удаленном сервере). Отладчик пока находится в стадии разработки, но он доступен для РНР версии 3.

define_ syslog_variab!es

Инициализация константы диспетчера системных событий

void define_syslogj/araibles (void)

Эти константы в дальнейшем используются функциями системных событий (syslog).

См. также: openlog(), syslog() и closelog().

openlog

Подключение к диспетчеру системных событий (system logger)

int openlog (string ident. int option, int facility)

Функция не обязательна для использования. Она автоматически (при необходимости) вызывается функцией syslog(), и в этом случае аргумент ident (по умолчанию) используется со значением FALSE. Строка ident будет добавляться к каждому отсылаемому сообщению. Обычно используется при необходимости явной передачи аргументов option и facility.

Аргумент option используется для указания параметров при генерации системного события (log message). Могут использоваться следующие значения:

LOG_CONS - в случае ошибки при посылке сообщения оно выводится непосредственно в системную консоль;
LOG_NDEIAY - незамедлительно подключиться-к диспетчеру системных событий:
LOGJDDELAY - (по умолчанию) отложить подключение до посылки первого сообщения;
LOG_PERROR - также выводить сообщения в стандартный поток ошибок;
LOG_PID - включать в сообщения идентификатор процесса (РШ).
Возможно одновременное указание нескольких значений при помощи битового оператора ИЛИ, например: LOG_CONS | LOG_NDELAY LOG_PID.

Аргумент facility указывает вид приложения, посылающего сообщение. Это влияет на их обработку системой;

LOG_AUTH - сообщения безопасности/авторизации (целесообразнее использовать LOG_AUTHPRIV на тех системах, где эта константа определена);
LOG_AUTHPRIV - персональные сообщения бсчогасности/авторнза-ции;
LOG_CRON - служба таймера (демоны сгоп и at);
LOGJDAEMON - другие системные службы (daemons);
LOGJCERN - сообщения ядра системы (kernel);
LOG_LOCALO ... LOG_LOCAL7 - зарезервировано для локального использования;
LOGJ.PR - подсистема линейного принтера;
LOG_MAIL - почтовая подсистема (mail);
LOG_NEWS - подсистема новостей USENET;
LOG_SYSLOG - внутренне генерируемые сообщения (демоном syslogd);
LOGJJSER - сообщения, порождаемые приложениями (user-level);
IOGJJUCP - подсистема UUCP.
См. также: define_syslog_variables(), syslog() и closelog().

closelog

Отключение от диспетчера системных событий

int closelog(void)

Использование функции необязательно.

См. также: define_syslog_variables(), syslog() и openlog().

syslog

Посылка системного сообщения

Int syslog (int priority, string message)

i В аргументе message укалывается содержание сообщения. Пары символов %т в этом сообщении заменяются на строку текущего сообщения об ошибке (strerror), представляющую значение еггпо. Аргу-/ мент priority является комбинацией уровня приложения и приоритета события. Его возможные значения (в порядке понижения приоритета):

LOG_EMERG - неработоспособность системы;
LOG_ALERT - необходимы срочные действия;
LOG_CRIT - критическое состояние;
LOG_ERR - ошибка;
LOG_WARNING - предупреждение;
LOG_NOTICE - значимое сообщение;
LOG_INFO - информационное сообщение;
LOG_DEBUG - сообщение отладки.
define_syslog_vcr ablest);
GpenlogC'mySrnpiog".
LOG_PID | LOG_PERROR. LOGJ.OCALO):
// ... if (!authorized_client())
{ // процедура авторизации
// неавторизирован! (сохранить сообщение об этом)
Sacress = date("Y/m/d H:i:s").
syslog(LOG_WARNING."Unauthorized client:
Saccess
$REMOTE_AODR ($HTTP_USER_AGENT)"): )
closelog():

В системной документации должно быть указано, как установить собственный обработчик системных событий.

На системах Winch ws NT служба syslog эмулируется как Event Log.

См. также: define_syslog_variables(), openlog(), closelog().

Общий низкоуровневый сетевой интерфейс

fsockopen

Открытие сокета Интернета или домена Unix

int fsockopen (string [udp://]hostname, int port [, int errno [, string errstr [, double timeout]]])

Инициирует поток подключения к Интернет (AF_INET, используя TCP или UDP) или в домене Unix (AF_UNIX). Для доменов Интернет открывает сеанс подключения (TCP socket connection) с компьютером hostname через порт port. Значение hostname может быть либо полным доменным именем (FQDN), либо адресом IP. Для подключений UDP необходимо явно указывать протокол, например: «udp:// hostname». Для доменов Unix hostname может содержать путь к соке-ту, тогда значение port должно быть равно 0. Необязательным аргументом timeout можно указать допустимый промежуток времени подключения в секундах.

Функция возвращает дескриптор файла, как при открытии локального файла, который затем может использоваться в функциях файлового ввода/вывода: fgets(), fgetss(), fputs(), fclose() и feof().

При возникновении ошибки возвращает FALSE и устанавливает системные значения номера и сообщения причины ошибки в аргументы (они должны передаваться по ссылке) errno и errstr. Если возвращается FALSE, а аргумент errno равняется 0, то это означает, что ошибка произошла до вызова функции (возможная причина в инициализации сокета).

По умолчанию сеанс открывается в эксклюзивном (блокированном) режиме.

См. функцию socket_set_blocking().

$fp = fsockopen
("www.php.net". 80. &$errno. &$errstr. 30).
if (!$fp) {
echo "Serrstr ($errno)<br>\n". } else {

fputs ($fp. "GET / HTTP/1 0\r\n\r\n");
while (!feof($fp)) { echo fgets ($fp.l28).
fclose ($fp):

Следующий пример демонстрирует получение даты и времени от UDP службы «daytime» (порт 13) на локальной машине.

$fp = fsockopen
("udp://127.0.0.1". 13. &$errno. Merrstr):
If (!$fp) {
echo "ERROR: Serrno - $errstr<br>\n", }
else { fwnte($fp,"\n");
echo fread($fp. 26):
fclose($fp): }

См. также: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose() и feof().

pfsockopen

Открытие устойчивого подключения

j int pfsockopen (string hostname, int port [, int errno _jy [, string errstr [, int timeout]]])

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

socket_get_status

Получение статуса подключения

array socket_get_status (resource socket_get_status)

Возвращает в массиве информацию об открытом подключении. В настоящее время возвращаются четыре элемента:

timed_out (bool) - длительность периода ожидания ответа (тайм-аут);
blocked (bool) - заблокированность;
eof (bool) - получен ли символ EOF;
unread_bytes (int) - число байтов, оставшихся в буфере.
См. также: accept_connect(), bind(), connect(), listen(), strerror().

socket_set _timeout

Установка периода timeout для сокета

bool socket_set_timeout (int socket_descriptor, int seconds, int microseconds)

Устанавливает для подключения socket_descriptor длительность периода ожидания ответа, это сумма аргументов seconds (секунды) и microseconds (микросекунды).

$fp = fsockopen("www.php net". 80).
if(!$fp) {
echo "Ошибка подключения \n":
} else { fputs($fp."GET /
HTTP/1 0\n\n"):
$start = time():
socket_set_t i meout($ fp. 2):
$res = fread($fp. 2000):
var_dump(socket_get_status($fp))
fclose($fp);
print $res: }

См. также: fsockopen() и fopen().

socket_set_blocking

Установка режима блокирования

int socket_set_blocking (int socket_descriptor, int mode)

Если в аргументе mode указывается значение FALSE, то обозначенный дескриптором socket_descriptor сокет переводится в неблокируемый режим. Противное происходит при TRUE. Это воздействует на вызовы функций чтения, подобные fgets(), которые исполняются незамедлительно в неблокированном режиме или, иначе, ожидают разблокировки (получения читаемых данных).

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉