stream_socket_serverとは? わかりやすく解説

Weblio 辞書 > コンピュータ > PHP関数リファレンス > stream_socket_serverの意味・解説 

stream_socket_server

(PHP 5)
stream_socket_server — インターネットドメインまたは Unix ドメインのサーバソケットを作成する

説明

resource stream_socket_server ( string local_socket [, int &errno [, string &errstr [, int flags [, resource context]]]] )
local_socket で指定された接続ポイントに、 ストリームまたはデータグラムソケットによる接続を作成します。 作成されるソケットのタイプは、[トランスポート]://[ターゲット] という形式の URL フォーマットによって指定された トランスポートによって決定されます: TCP や UDP といったインターネットドメインのソケット (AF_INET) には、remote_socket パラメータの ターゲット の部分は、ホスト名または IP アドレスと、 それに続くコロンで区切られたポート番号から構成されていなければなりません。 Unix ドメインのソケットの場合は、ターゲット の部分は、ファイルシステムにおけるソケットのファイルを指定しなくては いけません。 flags は、ソケット作成フラグの任意の組み合わせ を指定できるビットフィールドです。 デフォルトの値は、STREAM_SERVER_BIND | STREAM_SERVER_LISTEN です。
注意: UDP ソケットに対しては、STREAM_SERVER_BINDflags パラメータとして使用する必要があります。
この関数は、ソケットのみを作成します。接続待ちの状態に入るには、 stream_socket_accept() 関数を使います。
もし失敗した場合は、FALSE を返し、その時オプションの errnoerrstr パラメータが存在するときは、そこにシステムレベルの socket()bind() および listen() のコールにおいて発生した 実際のシステムレベルのエラーを返します。 もし、errno に返された値が 0 で、かつ FALSE が返された場合、bind() コールを行う前にエラーが発生したことを示しており、これは多くの場合 ソケットの初期化に失敗したことを示しています。 errnoerrstr パラメータは常に参照渡しとなることに留意してください。
システムの種類によって、Unix ドメインのソケットが利用できない場合が あります。 利用できるトランスポートの種類は、stream_get_transports() によって知ることができます。 組み込みのトランスポートのリストは、付録 O. サポートされるソケットトランスポートのリスト を参照ください。
例 2245. TCP サーバソケットの使用
<?php
$socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!$socket) {
  echo "$errstr ($errno)<br />\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 権限が必要となります。
例 2246. UDP サーバソケットを利用する
<?php
$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);

?>


注意: 数値で IPv6 アドレスを指定するときは、 (例 fe80::1) アドレスを角カッコでくくらなくてはなりません。たとえば、 tcp://[fe80::1]:80.
stream_socket_client(), stream_set_blocking(), stream_set_timeout(), fgets(), fgetss(), fwrite(), fclose(), feof(), と Curl 拡張モジュール も参照ください。


このページでは「PHP関数リファレンス」からstream_socket_serverを検索した結果を表示しています。
Weblioに収録されているすべての辞書からstream_socket_serverを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からstream_socket_server を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「stream_socket_server」の関連用語

stream_socket_serverのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



stream_socket_serverのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.

©2025 GRAS Group, Inc.RSS