関数・クラス解説

socket_recvfrom

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

接続しているかどうかによらず、ソケットからデータを受信する

公式リファレンス

書式

socket_recvfrom ( resource $socket , string &$buf , int $len , int $flags , string &$name [, int &$port ] ) : int

説明

socket_recvfrom() 関数は、 ポート port (AF_UNIX 型のソケットである場合を除く) 上の name から受信した len バイトのデータを buf に格納します。 socket_recvfrom() は、 接続済みのソケットだけでなく接続していないソケットに対しても使用可能です。 さらに、フラグを指定することでこの関数の挙動を設定できます。

name と port は参照渡しとしなければなりません。接続していないソケットの場合は、 name はリモートホストの IP アドレスか UNIX ソケットへのパスとなります。接続済みのソケットの場合は、 name は NULL とします。 また、AF_INET あるいは AF_INET6 形式のまだ接続していないソケットの場合、 port にはリモートホストのポート番号を指定します。

注意: この関数はバイナリデータに対応しています。

パラメータ

socket
socket には、 socket_create() で作成したソケットリソースを指定します。
buf
受信したデータが buf に格納されます。
len
最大 len バイトまでのデータをリモートホストから取得します。
flags
flags の値は、以下のフラグの任意の組み合わせを 論理 OR 演算子 (|) で連結したものとなります。
flags に使用できる値
フラグ 説明
MSG_OOB 帯域外 (out-of-band) のデータを処理する。
MSG_PEEK 受信キューの先頭にあるデータを受信し、 そのデータをそのままキューに残しておく。
MSG_WAITALL 少なくとも len バイト受信するまではブロックする。 しかし、もし何らかのシグナルを受信したりリモートホストとの接続が切断された場合は これより少ないバイト数を返す可能性がある。
MSG_DONTWAIT 通常はブロックする場面であってもそのまま return する。
name
AF_UNIX 型のソケットの場合は、 name はファイルへのパスとなります。 それ以外の場合は、未接続のソケットの場合には name はリモートホストの IP アドレスとなります。 接続済みソケットの場合は NULL となります。
port
この引数は AF_INET 型あるいは AF_INET6 型のソケットに対してのみ適用され、 データを受信するリモートホストのポートを指定します。 接続済みソケットの場合は port は NULL となります。

返値

socket_recvfrom() は、受信したバイト数を返します。 あるいはエラー時には FALSE を返します。 エラーコードを取得するには socket_last_error() をコールします。取得したエラーコードを socket_strerror() に渡すと、 そのエラーについての説明を得ることができます。

サンプル

例1 socket_recvfrom() の例

error_reporting(E_ALL | E_STRICT); $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_bind($socket, '127.0.0.1', 1223); $from = ''; $port = 0; socket_recvfrom($socket, $buf, 12, 0, $from, $port); echo "リモートアドレス $from のポート $port から $buf を受信しました" . PHP_EOL;

この例は、127.0.0.1 のポート 1223 との UDP ソケットを確立し、受信したデータを最大 12 バイトまで表示します。

参考

  • socket_recv() - 接続したソケットからデータを受信する
  • socket_send() - 接続したソケットにデータを送信する
  • socket_sendto() - 接続しているかどうかによらずソケットにメッセージを送信する
  • socket_create() - ソケット(通信時の終端)を作成する
  • ワード検索


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

    関数名アルファベット別

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