PHP Conference Nagoya 2025

socket_sendto

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

socket_sendto接続しているかどうかによらずソケットにメッセージを送信する

説明

socket_sendto(
    Socket $socket,
    string $data,
    int $length,
    int $flags,
    string $address,
    ?int $port = null
): int|false

関数 socket_sendto() は、 アドレス addrport を使用し、 data からソケット socketlength バイトのデータを送信します。

パラメータ

socket

socket_create() で作成した Socket クラスのインスタンス。

data

送信するデータが、data から取り出されます。

length

data から length バイト分のデータが送信されます。

flags

flags の値は、以下のフラグの任意の組み合わせを 論理 OR 演算子 (|) で連結したものとなります。

flags がとりうる値
MSG_OOB OOB(out-of-band: 帯域外)データを送信します。
MSG_EOR レコードにマークをつけます。 レコードでデータがそろいます。
MSG_EOF ソケットの送信側を閉じ、そのことを知らせる通知を送信データの最後に付加します。 トランザクションでデータがそろいます。
MSG_DONTROUTE ルータを使用せず、直接つながっているインターフェイスのみを使用します。

address

リモートホストの IP アドレス。

port

port は、 データの送信先となるリモートホストのポート番号です。

戻り値

socket_sendto() は、リモートホストに送信したバイト数を返します。 エラーが発生した場合は false を返します。

変更履歴

バージョン 説明
8.0.0 socket は、Socket クラスのインスタンスになりました。 これより前のバージョンでは、リソース型でした。
8.0.0 port は、nullable になりました。

例1 socket_sendto() の例

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);

$msg = "Ping !";
$len = strlen($msg);

socket_sendto($sock, $msg, $len, 0, '127.0.0.1', 1223);
socket_close($sock);
?>

参考

  • socket_send() - 接続したソケットにデータを送信する

add a note

User Contributed Notes 1 note

up
1
ole_DOT_omland_AT_gmail_DOT_com
19 years ago
Here's how you can make an udp broadcast, useful sometimes, and does seem hard to figure out hwo to do..

<?php
$sock
= socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, 1);
socket_sendto($sock, $broadcast_string, strlen($broadcast_string), 0, '255.255.255.255', $port);
?>
To Top