関数・クラス解説

stream_socket_server

version:PHP 5, PHP 7 (公式)

インターネットドメインまたは Unix ドメインのサーバーソケットを作成する

公式リファレンス

書式

stream_socket_server ( string $local_socket [, int &$errno [, string &$errstr [, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN [, resource $context ]]]] ) : resource

説明

local_socket で指定された接続ポイントに、 ストリームまたはデータグラムソケットによる接続を作成します。

この関数は、ソケットのみを作成します。接続待ちの状態に入るには、 stream_socket_accept() 関数を使います。

パラメータ

local_socket
作成されるソケットのタイプは、[トランスポート]://[ターゲット] という形式の URL フォーマットによって指定された トランスポートによって決定されます: TCP や UDP といったインターネットドメインのソケット (AF_INET) には、remote_socket パラメータの ターゲット の部分は、ホスト名または IP アドレスと、 それに続くコロンで区切られたポート番号から構成されていなければなりません。 Unix ドメインのソケットの場合は、ターゲット の部分は、ファイルシステムにおけるソケットのファイルを指定しなくては いけません。 システムの種類によって、Unix ドメインのソケットが利用できない場合があります。 利用できるトランスポートの種類は、stream_get_transports() によって知ることができます。 組み込みのトランスポートのリストは、サポートされるソケットトランスポートのリスト を参照ください。
errno
オプションの errno と errstr パラメータが存在するときは、そこにシステムレベルの socket()、bind() および listen() のコールにおいて発生した 実際のシステムレベルのエラーを返します。 もし、errno に返された値が 0 で、かつ FALSE が返された場合、bind() コールを行う前にエラーが発生したことを示しており、これは多くの場合 ソケットの初期化に失敗したことを示しています。 errno と errstr パラメータは常に参照渡しとなることに留意してください。
errstr
errno の説明を参照ください。
flags
ソケット作成フラグの任意の組み合わせを指定できるビットフィールドです。
注意: UDP ソケットに対しては、STREAM_SERVER_BIND を flags パラメータとして使用する必要があります。
context

返値

作成したストリーム、あるいはエラー時に FALSE を返します。

注意

注意: 数値で IPv6 アドレスを指定するときは、(例 fe80::1) アドレスを角カッコでくくらなくてはなりません。たとえば、tcp://[fe80::1]:80.

サンプル

例1 TCP サーバーソケットの使用

$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr); if (!$socket) {   echo "$errstr ($errno)\n"; } else {   while ($conn = stream_socket_accept($socket)) {     fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n");     fclose($conn);   }   fclose($socket); }

下記の例は、PHP のスクリプトが、どうやって stream_socket_client() で示したような、 問い合わせに応答するタイムサーバーとして機能するかを示したものです。

注意: 1024 番よりも小さいポート番号のサーバーソケットを作成する場合、 多くのシステムでは root 権限が必要となります。

例2 UDP サーバーソケットを利用する

$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND); if (!$socket) {     die("$errstr ($errno)"); } do {     $pkt = stream_socket_recvfrom($socket, 1, 0, $peer);     echo "$peer\n";     stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer); } while ($pkt !== false);

参考

  • stream_socket_client() - インターネットドメインまたは Unix ドメインのソケット接続を開く
  • stream_set_blocking() - ストリームのブロックモードを有効にする / 解除する
  • stream_set_timeout() - ストリームにタイムアウトを設定する
  • 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用の拡張モジュール