【PHP8.x】fsockopen関数の使い方

作成日: 更新日:

fsockopen関数は、指定されたホストとポートに対してインターネットソケット接続、またはUnixドメインソケット接続を開く処理を実行する関数です。この関数は、主にTCP/IP接続を確立し、その通信路をファイルポインタとして扱えるようにします。第1引数に接続先のホスト名、第2引数にポート番号を指定するのが基本的な使い方です。ホスト名に ssl://tls:// といったプレフィックスを付けることで、暗号化されたSSL/TLS接続を確立することも可能です。接続に成功すると、ファイルポインタとして利用できるリソースが返されます。このリソースに対して fwrite() でデータを送信したり、fread()fgets() でデータを受信したりすることができます。これにより、HTTPやSMTPといった様々なプロトコルのクライアントを実装することが可能になります。接続が不要になった際は、必ず fclose() 関数で接続を閉じる必要があります。接続に失敗した場合は false を返し、引数として渡した変数にエラー番号とエラーメッセージが格納されるため、詳細なエラーハンドリングを行うことができます。

基本的な使い方

構文(syntax)

fsockopen(
    string $hostname,
    int $port = -1,
    int &$error_code = null,
    string &$error_message = null,
    ?float $timeout = null
): resource|false

引数(parameters)

string $hostname, int $port = -1, ?int &$error_code = null, ?string &$error_message = null, ?float $timeout = null

  • string $hostname: 接続するホスト名またはIPアドレスを指定します。
  • int $port = -1: 接続するポート番号を指定します。デフォルトは-1で、プロトコルに対応するデフォルトポートが使用されます。
  • ?int &$error_code = null: エラーが発生した場合、エラーコードが格納される変数を参照で指定します。
  • ?string &$error_message = null: エラーが発生した場合、エラーメッセージが格納される変数を参照で指定します。
  • ?float $timeout = null: 接続試行のタイムアウト時間を秒単位で指定します。

戻り値(return)

resource|false

指定されたホストとポートへのソケット接続を試み、成功した場合はソケットリソースを、失敗した場合はfalseを返します。