関数・クラス解説

stream_socket_client

version:PHP 5, PHP 7 (公式)

インターネットドメインまたは Unix ドメインのソケット接続を開く

公式リファレンス

書式

stream_socket_client ( string $remote_socket [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") [, int $flags = STREAM_CLIENT_CONNECT [, resource $context ]]]]] ) : resource

説明

remote_socket で指定された接続先との、 ストリームまたはデータグラム接続を確立します。 作成されるソケットのタイプは、[トランスポート]://[ターゲット] という形式の URL フォーマットによって指定された トランスポートによって決定されます。 TCP や UDP といったインターネットドメインのソケット (AF_INET) には、remote_socket パラメータの ターゲット の部分は、ホスト名または IP アドレスと、 それに続くコロンで区切られたポート番号から構成されていなければなりません。 Unix ドメインのソケットの場合は、ターゲット の部分は、ファイルシステムにおけるソケットのファイルを指定しなくては いけません。

注意:

ストリームはデフォルトではブロックモードで開かれますが、 stream_set_blocking() を使うことで非ブロックモードに 変更することができます。

パラメータ

remote_socket
接続するソケットのアドレス。
errno
接続に失敗した場合にシステムレベルのエラー番号が設定されます。
errstr
接続に失敗した場合にシステムレベルのエラーメッセージが設定されます。
timeout
connect() システムコールがタイムアウトとなるまでの秒数。
注意: このパラメータが適用されるのは、非同期通信を試みていない場合のみです。
注意: ソケット上のデータの読み書きに関してタイムアウトを設定する必要がある場合は、 stream_set_timeout() を使ってください。 stream_socket_client() に渡される timeout は、ソケットの接続時にのみ適用されます。
flags
接続設定フラグの任意の組み合わせを指定できるビットフィールドです。 現在、接続設定フラグとして選択できる値は、 STREAM_CLIENT_CONNECT(デフォルト)、 STREAM_CLIENT_ASYNC_CONNECT と STREAM_CLIENT_PERSISTENT のみです。
context
stream_context_create() で作成した有効なコンテキストリソース。

返値

成功した場合に、 fgets(), fgetss(), fwrite(), fclose(), feof() といった、ファイル関数と共に使うことのできるストリームリソースを返します。

エラー

失敗した場合は、errno と errstr に システムレベルの connect() 関数の実行時に発生したシステムレベルのエラーを表す値を返します。 もし、errno に返された値が 0 で、かつ、 この関数が FALSE を返した時は、 connect() システムコールの前に何らかのエラーが 発生したことを示しています。これは、多くの場合、ソケットの初期化 に失敗したことで起こります。errno と errstr パラメータは常に参照渡しされることに 留意してください。

注意

警告 UDP ソケットは、リモートホストに到達できなくても エラーを発生せず、開いているかような状態になることがありす。 このエラーは、実際にソケットに対して、読み込みや書き込み動作を 行ってみないと判断できません。原因としては、UDP が非接続型の プロトコルであることが挙げられます。つまり、実際にデータを 送受信する段階になるまで、OS の側では接続を確立しようとしないという ことです。

注意: 数値で IPv6 アドレスを指定するときは、(例 fe80::1) アドレスを角カッコでくくらなくてはなりません。たとえば、tcp://[fe80::1]:80.
注意: 環境により、Unix ドメインや接続タイムアウトが利用できない場合があります。 有効なトランスポートのリストは、stream_get_transports() で取得できます。組み込むのポートの一覧については、 サポートされるソケットトランスポートのリスト を参照ください。
警告 UDP ソケットは、リモートホストに到達できなくても エラーを発生せず、開いているかような状態になることがありす。 このエラーは、実際にソケットに対して、読み込みや書き込み動作を 行ってみないと判断できません。原因としては、UDP が非接続型の プロトコルであることが挙げられます。つまり、実際にデータを 送受信する段階になるまで、OS の側では接続を確立しようとしないという ことです。

サンプル

例1 stream_socket_client() の例

$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30); if (!$fp) {     echo "$errstr ($errno)\n"; } else {     fwrite($fp, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");     while (!feof($fp)) {         echo fgets($fp, 1024);     }     fclose($fp); }

例2 UDP 接続の使用

ローカルホスト上で動いている UDP サービスの "daytime" (ポート 13) で日時の情報を取得します。

$fp = stream_socket_client("udp://127.0.0.1:13", $errno, $errstr); if (!$fp) {     echo "ERROR: $errno - $errstr\n"; } else {     fwrite($fp, "\n");     echo fread($fp, 26);     fclose($fp); }

参考

  • stream_socket_server() - インターネットドメインまたは Unix ドメインのサーバーソケットを作成する
  • stream_set_blocking() - ストリームのブロックモードを有効にする / 解除する
  • stream_set_timeout() - ストリームにタイムアウトを設定する
  • stream_select() - select() システムコールと同等の操作を、 ストリームの配列に対して tv_sec と tv_usec で指定されたタイムアウト時間をもって行う
  • fgets() - ファイルポインタから 1 行取得する
  • fgetss() - ファイルポインタから 1 行取り出し、HTML タグを取り除く
  • fwrite() - バイナリセーフなファイル書き込み処理
  • fclose() - オープンされたファイルポインタをクローズする
  • feof() - ファイルポインタがファイル終端に達しているかどうか調べる
  • cURL 関数
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール