stream_socket_server
インターネットドメインまたは Unix ドメインのサーバーソケットを作成する
&reftitle.description;
resourcefalsestream_socket_server
stringaddress
interror_code&null;
stringerror_message&null;
intflagsSTREAM_SERVER_BIND | STREAM_SERVER_LISTEN
resourcenullcontext&null;
address で指定された接続ポイントに、
ストリームまたはデータグラムソケットによる接続を作成します。
この関数は、ソケットのみを作成します。接続待ちの状態に入るには、
stream_socket_accept 関数を使います。
&reftitle.parameters;
address
作成されるソケットのタイプは、[トランスポート]://[ターゲット]
という形式の URL フォーマットによって指定された
トランスポートによって決定されます:
TCP や UDP といったインターネットドメインのソケット (AF_INET)
には、remote_socket パラメータの
ターゲット の部分は、ホスト名または IP アドレスと、
それに続くコロンで区切られたポート番号から構成されていなければなりません。
Unix ドメインのソケットの場合は、ターゲット
の部分は、ファイルシステムにおけるソケットのファイルを指定しなくては
いけません。
システムの種類によって、Unix ドメインのソケットが利用できない場合があります。
利用できるトランスポートの種類は、stream_get_transports
によって知ることができます。
組み込みのトランスポートのリストは、
を参照ください。
error_code
オプションの
error_code と error_message
パラメータが存在するときは、そこにシステムレベルの
socket()、bind() および
listen() のコールにおいて発生した
実際のシステムレベルのエラーを返します。
もし、error_code に返された値が 0
で、かつ &false; が返された場合、bind()
コールを行う前にエラーが発生したことを示しており、これは多くの場合
ソケットの初期化に失敗したことを示しています。
error_code と error_message
パラメータは常に参照渡しとなることに留意してください。
error_message
error_code の説明を参照ください。
flags
ソケット作成フラグの任意の組み合わせを指定できるビットフィールドです。
UDP ソケットに対しては、STREAM_SERVER_BIND を
flags パラメータとして使用する必要があります。
context
&reftitle.returnvalues;
作成したストリーム、あるいはエラー時に &false; を返します。
&reftitle.changelog;
&Version;
&Description;
8.0.0
context は、nullable になりました。
&reftitle.examples;
TCP サーバーソケットの使用
\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 権限が必要となります。
UDP サーバーソケットを利用する
]]>
&reftitle.notes;
&ipv6.brackets;
&reftitle.seealso;
stream_socket_client
stream_set_blocking
stream_set_timeout
fgets
fgetss
fwrite
fclose
feof
Curl 拡張モジュール