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


• $fp = fsockopen("rnyTCPServer.wrox. com", 4567);

соединение с сокетом TCP, ожидающим на сервере myTCPServer. wrox. com на порту с номером 4567.

• $fp = fsockopen("udp://myUDPServer. wrox. com", 6789);

соединение с сокетом UDP, ожидающим на сервере myUDPServer.wrox.com на порту с номером 6789.

• $fp = fsockopen("/tmp/unixsocket456",0);

соединение с сокетом домена UNIX, обращение к которому идет по марш­руту файловой системы /tmp/unixsocket456. При использовании сокетов доменов UNIX номер порта обязательно устанавливается в

Необязательные аргументы errno и errstr можно задавать во всех приведен­ных случаях для указания на сбойные ситуации, которые могут возникать при соединении с сокетом. errno задает номер ошибки, a errstr - текст сооб­щения об ошибке. Если errno возвращает 0, афункция возвращает false, зна­чит, при инициализации сокета имели место неполадки.

Для сокетов TCP и UDP можно указать необязательный аргумент ti m e o ut, за­дающий количество секунд, в течение которого функция пытается устано­вить соединение. Возврат значения false означает неуспех. Если вызов функции успешен, возвращается указатель на файл, который можно приме­нять с функциями, позволяющими осуществлять чтение и запись по файло­вым указателям, такими как fgets() и fputs().

Функция pfsockopen() выполняет те же действия, что и fsockopen(), и прини­мает такие же аргументы. Единственная разница в том, что соединения, от­крытые fsockopen(), уничтожаются после завершения сценария, а соедине­ния, открытые pfsockopenО, сохраняются даже после этого.

По отношению к функции pfsockopen() следует проявлять ту же осторож­ность, что и к другим сохраняющим соединение функциям, и даже несколько большую. Прежде всего, соединение будет постоянным только в том процес­се, вкоторомАрасЬеоткрылсоединение. Еслипоследующийзапрособслужи- вается другим процессом Apache, необходимо вызвать эту функцию снова. Кроме того, вполне возможно, что логика работающего на сервере приложе­ния не потерпит существование бездействующего соединения в течение слишком долгого времени и закроет его. Из этого следует, что нельзя быть полностью уверенным вдоступности соединения в любой момент времени.

socket_set_blocking()

int socket_set_blocking(int socket_descriptor, int mode)

Эта функция устанавливает или сбрасывает блокирующее состояние ввода/ вывода сокета. В первом аргументе указывается дескриптор сокета, а если второй аргумент имеет значение true, то сокет устанавливается как блокиру­ющий. Если передать аргумент false, то сокет устанавливается как не бло­кирующий.




Создать сайт еще не достаточно для того, чтобы вас нашли в интернете. Еще необходимо сделать грамотное продвижение сайта в интернете. А в этом вам поможет команда специалистов из компании alma-com.ru и о вас и вашей компании узнают все.