PHP 매뉴얼
이전 |  | 다음

# fsockopen

(PHP 3, PHP 4 , PHP 5)

fsockopen -- 인터넷이나 유닉스 도메인의 소켓 연결을 열어줍니다.

## Description

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

인터넷 (TCP 또는 UDP를 사용하는AF_INET) 또는 유닉스(AF_UNIX)도메인에서 스트림 연결을 시작합니다. 이것은 인터넷 도메인이라는 것 때문에 TCP 소켓을 `port`상에서 `hostname`에 연결하는 것을 열어줍니다. `hostname`은 이와 같은 경우에 완전히 증명이 된 도메인 네임이거나 IP 어드레스일 수 있습니다. UDP 연결에서는 프로토콜을 미리 정의해야 합니다 : `udp://hostname`. 유닉스 도메인에서는 `hostname`이 소켓의 경로로 사용될 수 있는데 이 경우에 `port`는 0 으로 설정되어야 합니다. 선택사항인 `timeout`은 시스템 호출에 연결되는 것에 대한 시간초과가 몇 초안에 이루어지도록 설정할 수 있습니다.

fsockopen()은 다른 파일관련 함수(다음과 같은 fgets(), fgetss(), fputs(), fclose() 그리고 feof()) 와 사용할 수 있는 파일 포인터를 반환합니다.

호출에 실패하면 `FALSE`를 반환하고 임의항목인 `errno`와 `errstr`인수가 있다면 시스템 차원의 `connect()`호출 에서 발생한 실제의 시스템 차원의 에러를 측정하기 위해 설정될 수 있습니다. 반환되는 errno 가 0 이고 함수가 `FALSE`를 반환했다면 `connect()`호출 이전에 에러가 발생했다는 것을 알 수 있습니다. 이것은 소켓을 초기화하면서 발생한 문제일 가능성이 높습니다. 주의할 것은 `errno`와 `errstr`인수는 레러 passed by reference되어야 합니다.

환경에 따라 유닉스 도메인이나 선택사항인 연결 시간초과는 사용이 지원되지 않을 수도 있습니다.

소켓은 기본적으로 블로킹 모드(blocking mode)로 열려집니다. socket_set_blocking()을 사용해서 블로킹모드 해제상태(non-blocking mode) 로 전환할 수 있습니다..

예 1. fsockopen() 예문

`$fp = fsockopen ("www.php.net", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br>\n"; } else { fputs ($fp, "GET / HTTP/1.0\r\n\r\n"); while (!feof($fp)) { echo fgets ($fp,128); } fclose ($fp); }`

다음의 예문은 가지고 있는 장비에서 UDP 서비스인 "daytime" (port 13)을 이용해서 어떻게 날짜와 시간을 가져오는지 보여줍니다.

예 2. UDP 연결을 사용합니다

`<?php $fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr); if (!$fp) { echo "ERROR: $errno - $errstr<br>\n"; } else { fwrite($fp,"\n"); echo fread($fp, 26); fclose($fp); } ?>`

> 참고: 시간초과 매개변수는 PHP 3.0.9 에 소개가 되었고 UDP 지원은 PHP 4에 추가되었습니다.

참조: pfsockopen(), socket_set_blocking(), socket_set_timeout(), fgets(), fgetss(), fputs(), fclose(), 그리고 feof()).

이전 | 처음으로 | 다음
dns_get_record | 위로 | gethostbyaddr