fsockopen
(PHP 4, PHP 5)
fsockopen — 인터넷이나 유닉스 도메인의 소켓 연결을 열어줍니다.
Description
인터넷 (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) 로 전환할 수 있습니다..
Example#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);
}
Example#2 UDP 연결을 사용합니다
<?php
$fp = fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!$fp) {
echo "ERROR: $errno - $errstr<br>\n";
} else {