>  기사  >  백엔드 개발  > 

PHPz
PHPz원래의
2023-07-24 21:49:081899검색

PHP 함수 소개—fsockopen(): 네트워크 연결 열기

fsockopen() 함수는 네트워크 연결을 여는 데 사용되는 PHP의 메서드입니다. 이를 통해 TCP/IP 프로토콜을 통해 원격 서버와 통신하고, 요청을 보내고, 응답을 받을 수 있습니다. 본 글에서는 fsockopen() 함수를 자세히 소개하고, 독자들이 함수를 이해하고 사용할 수 있도록 코드 예제를 제공하겠습니다.

  1. 함수 구문:
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
  1. 함수 매개변수:
  2. $hostname: 연결할 대상 호스트 주소. IP 주소 또는 도메인 이름일 수 있습니다.
  3. $port: 선택적 매개변수, 연결하려는 대상 호스트의 포트 번호를 지정합니다. 기본값은 -1입니다. 이는 기본 포트 번호를 사용함을 의미합니다.

다음은 선택적 매개변수입니다(일반적으로 사용되지 않음).

  • &$errno: 연결이 실패하면 참조된 변수를 오류 코드로 설정합니다.
  • &$errstr: 연결이 실패하면 참조된 변수를 오류 메시지로 설정합니다.
  • $timeout: 연결 시간 제한을 초 단위로 지정하는 선택적 매개변수입니다. 기본값은 ini_get("default_socket_timeout")이며, 기본값은 PHP 구성에 설정된 소켓 시간 초과입니다.
  1. 함수 반환 값:
  2. 성공하면 연결 정보가 포함된 리소스 핸들이 반환되며, 이는 다른 함수에서 사용할 수 있습니다.
  3. 실패하면 false를 반환합니다.
  4. 함수 사용 예:

다음은 fsockopen() 함수를 사용하여 원격 웹 사이트의 콘텐츠를 가져오는 예입니다.

<?php
// 定义目标服务器地址和端口号
$hostname = 'www.example.com';
$port = 80;

// 打开一个网络连接
$fp = fsockopen($hostname, $port, $errno, $errstr, 10);

// 连接失败时输出错误信息
if (!$fp) {
    echo "Connection failed: $errno - $errstr";
    exit;
}

// 发送 HTTP 请求头
$request = "GET / HTTP/1.1
";
$request .= "Host: $hostname
";
$request .= "Connection: close

";
fwrite($fp, $request);

// 读取响应并输出
while (!feof($fp)) {
    echo fgets($fp, 128);
}

// 关闭连接
fclose($fp);
?>

위 코드는 fsockopen() 함수를 통해 대상 서버와 연결을 생성합니다. , 그런 다음 간단한 HTTP를 보냅니다. A GET 요청이 이루어졌고 응답을 읽었습니다. 이 예에서 우리가 지정한 호스트는 www.example.com이고 포트는 HTTP 프로토콜의 기본 포트인 80입니다. 요청 헤더에 Host 및 Connection 필드가 설정된 후 fwrite() 함수를 통해 요청이 서버로 전송됩니다. 마지막으로 fgets() 함수를 통해 응답을 지속적으로 읽고 echo를 통해 출력합니다.

SSL 암호화 연결을 열고 싶다면 "ssl://"을 호스트 이름의 접두사로 사용하고 적절한 포트 번호(보통 443)를 지정할 수 있다는 점에 유의할 가치가 있습니다.

요약:
fsockopen() 함수는 네트워크 연결을 여는 데 사용되는 PHP의 강력한 도구입니다. 이를 통해 원격 서버와 통신하고, 요청을 보내고, 응답을 받을 수 있습니다. 이 기사에서는 fsockopen() 함수의 구문과 매개변수를 소개하고 이를 사용하는 방법을 보여주는 샘플 코드를 제공합니다. fsockopen() 함수를 익히고 유연하게 사용하면 네트워크 통신을 더 잘 처리하고 관리할 수 있습니다.

위 내용은 의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:다음 기사: