関数・クラス解説

socket_get_option

version:PHP 4 >= 4.3.0, PHP 5, PHP 7 (公式)

ソケットのオプションを取得する

公式リファレンス

書式

socket_get_option ( resource $socket , int $level , int $optname ) : mixed

説明

socket_get_option() 関数は、ソケット socket のオプション optname の値を取得します。socket_get_option() は、失敗した場合に FALSE を返します。

パラメータ

socket
socket_create() あるいは socket_accept() で作成したソケットリソース。
level
level パラメータは、オプションのプロトコルレベルを指定します。 例えば、オプションをソケットレベルで取得するには level パラメータに SOL_SOCKET を指定します。 TCP のようなそれ以外のレベルの場合、そのレベルのプロトコル番号を指定します。 プロトコル番号は getprotobyname() 関数を使用して取得可能です。
optname
使用可能なソケットオプション
オプション 説明
SO_DEBUG デバッグ情報を記録するかどうかを報告します。 int
SO_BROADCAST ブロードキャストメッセージの送信がサポートされているかどうかを報告します。 int
SO_REUSEADDR ローカルアドレスが再利用可能かどうかを報告します。 int
SO_REUSEPORT ローカルポートが再利用可能かどうかを報告します。 int
SO_KEEPALIVE 定期的なメッセージの送信によって接続がアクティブになっているかどうかを報告します。 もしソケットがこれらのメッセージに応答できなかった場合、 接続は崩壊し、ソケットへの書き込みを行うと SIGPIPE シグナルを受け取ります。 int
SO_LINGER データがまだ残っているうちに socket_close() をコールした場合に、socket を残存させるかどうかを報告します。 デフォルトでは、ソケットが閉じられる際には未送信のデータをすべて送信しようとします。 接続ベースのソケットでは、 socket_close() は接続先がデータを認識するまで閉じるのを待ちます。 l_onoff が非ゼロで l_linger がゼロの場合は、 その時点で未送信のデータはすべて破棄されます。 接続ベースのソケットの場合、接続先には RST (リセット) を送信します。 一方 l_onoff が非ゼロで l_linger も非ゼロの場合は、 socket_close() は 全データを送信し終えるか l_linger で指定した時間が経過するまで処理をブロックします。 ソケットが非ブロックモードの場合は、 socket_close() は失敗してエラーを返します。 array。配列に含まれるキーは l_onoff および l_linger のふたつ。
SO_OOBINLINE socket が帯域外のデータをインラインに残し続けるかを報告します。 int
SO_SNDBUF 送信バッファのサイズを報告します。 int
SO_RCVBUF 受信バッファのサイズを報告します。 int
SO_ERROR エラーステータスに関する情報を報告し、それをクリアします。 int (socket_set_option() で設定することはできません)
SO_TYPE socket の型 (たとえば SOCK_STREAM) を報告します。 int (socket_set_option() で設定することはできません)
SO_DONTROUTE 送信メッセージがルータを越えるかどうかを報告します。 int
SO_RCVLOWAT socket の入力操作を行う際の最小バイト数を報告します。 int
SO_RCVTIMEO 入力操作のタイムアウト値を報告します。 array。配列に含まれるキーはふたつ。 sec はタイムアウトの秒単位の部分で、 usec はタイムアウトのマイクロ秒位の部分。
SO_SNDTIMEO 出力関数がフロー制御のためにブロックするタイムアウト値を報告します。 array。配列に含まれるキーはふたつ。 sec はタイムアウトの秒単位の部分で、 usec はタイムアウトのマイクロ秒位の部分。
SO_SNDLOWAT socket の出力操作を行う際の最小バイト数を報告します。 int
TCP_NODELAY Nagle TCP アルゴリズムが無効になっているかどうかを報告します。 int
MCAST_JOIN_GROUP マルチキャストグループに参加します (PHP 5.4 で追加)。 二つのキー "group" と "interface" を含む配列。"group" には IPv4 あるいは IPv6 のマルチキャストアドレスを文字列で指定します。 "interface" には、インターフェイス番号 (整数値) あるいは "eth0" などのインターフェイス名 (文字列) を指定します。 0 を指定すると、ルーティングテーブルを使ってインターフェイスを選択します (socket_set_option() でのみ利用可能)。
MCAST_LEAVE_GROUP マルチキャストグループから離れます (PHP 5.4 で追加)。 配列。詳細は MCAST_JOIN_GROUP を参照ください (socket_set_option() でのみ利用可能)。
MCAST_BLOCK_SOURCE 特定のソースから、そのマルチキャストグループにやってくるパケットをブロックします。 そのマルチキャストグループに事前に参加しておく必要があります (PHP 5.4 で追加)。 MCAST_JOIN_GROUP と同じキーを含み、さらに追加でもうひとつのキーを含む配列。 追加のキーは source で、 ブロック対象となるソースの IPv4 アドレスあるいは IPv6 アドレスを文字列で指定します (socket_set_option() でのみ利用可能)。
MCAST_UNBLOCK_SOURCE 特定のソースから、そのマルチキャストグループにやってくるパケットのブロックを解除 (そして、受信を再開) します。 そのマルチキャストグループに事前に参加しておく必要があります (PHP 5.4 で追加)。 MCAST_BLOCK_SOURCE と同じ形式の配列 (socket_set_option() でのみ利用可能)。
MCAST_JOIN_SOURCE_GROUP 特定の値にマッチするソースアドレスからそのマルチキャストグループにやってきたパケットを受信します (PHP 5.4 で追加)。 MCAST_BLOCK_SOURCE と同じ形式の配列 (socket_set_option() でのみ利用可能)。
MCAST_LEAVE_SOURCE_GROUP 特定の値にマッチするソースアドレスからそのマルチキャストグループにやってきたパケットの受信を停止します (PHP 5.4 で追加)。 MCAST_BLOCK_SOURCE と同じ形式の配列 (socket_set_option() でのみ利用可能)。
IP_MULTICAST_IF IPv4 マルチキャストパケットの送信インターフェイス (PHP 5.4 で追加)。 インターフェイス番号を表す整数値か、インターフェイス名を表す eth0 のような文字列。 0 を指定すると、ルーティングテーブルを使ってインターフェイスを選択します。 socket_get_option() 関数の返り値は、インターフェイスのインデックスとなります。 注意すべき点は、C の API とは違ってこのオプションには IP アドレスを渡せないということです。 そのため、 IP_MULTICAST_IF と IPV6_MULTICAST_IF のインターフェイスの相違はなくなります。
IPV6_MULTICAST_IF IPv6 マルチキャストパケットの送信インターフェイス (PHP 5.4 で追加)。 IP_MULTICAST_IF と同じ。
IP_MULTICAST_LOOP IPv4 パケットのマルチキャストループバックポリシー。 このソケットが送信したマルチキャストパケットが、 このソケットが使う送信インターフェイス上の同一マルチキャストグループに属する 同一ホスト上の受信者にも届くかどうかを示します。 これはデフォルトの動作です (PHP 5.4 で追加)。 整数値 (0 あるいは 1)。socket_set_option() では任意の値を受け付けますが、通常の PHP のルールに従ってそれを boolean 値に変換します。
IPV6_MULTICAST_LOOP IP_MULTICAST_LOOP の IPv6 版 (PHP 5.4 で追加)。 整数値。IP_MULTICAST_LOOP を参照ください。
IP_MULTICAST_TTL IPv4 送信パケットの有効期間。0 (このインターフェイスから離れない) から 255 までの値を指定しなければなりません。デフォルトは 1 (ローカルネットワークにだけ到達する) です (PHP 5.4 で追加)。 0 から 255 までの整数値。
IPV6_MULTICAST_HOPS IP_MULTICAST_TTL の IPv6 版。 値として -1 を指定することもでき、これはデフォルトのルートを使うことを意味します (PHP 5.4 で追加)。 -1 から 255 までの整数値。

返値

指定したオプションの値、あるいはエラー時に FALSE を返します。

サンプル

例1 socket_get_option() の例

$socket = socket_create_listen(1223); $linger = array('l_linger' => 1, 'l_onoff' => 1); socket_set_option($socket, SOL_SOCKET, SO_LINGER, $linger); var_dump(socket_get_option($socket, SOL_SOCKET, SO_REUSEADDR));

参考

  • socket_create_listen() - 接続を受けつけるためにポートにソケットをオープンする
  • socket_set_option() - ソケットのオプションを設定する
  • ワード検索


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

    関数名アルファベット別

    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用の拡張モジュール