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_codeerror_message パラメータが存在するときは、そこにシステムレベルの socket()bind() および listen() のコールにおいて発生した 実際のシステムレベルのエラーを返します。 もし、error_code に返された値が 0 で、かつ &false; が返された場合、bind() コールを行う前にエラーが発生したことを示しており、これは多くの場合 ソケットの初期化に失敗したことを示しています。 error_codeerror_message パラメータは常に参照渡しとなることに留意してください。 error_message error_code の説明を参照ください。 flags ソケット作成フラグの任意の組み合わせを指定できるビットフィールドです。 UDP ソケットに対しては、STREAM_SERVER_BINDflags パラメータとして使用する必要があります。 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 拡張モジュール