【PHP8.x】stream_socket_sendto関数の使い方

作成日: 更新日:

stream_socket_sendto関数は、ネットワーク通信において、指定されたソケットリソースを通じてデータを特定の宛先へ送信するために使用される関数です。この関数は、主に接続を事前に確立しない「コネクションレス」な通信プロトコル、例えばUDP(User Datagram Protocol)を用いたデータ送信に特に適しています。

具体的には、stream_socket_sendto関数は、stream_socket_client関数などで作成されたソケットリソース(通信経路の窓口)と、実際に送信したいデータ(メッセージ)を受け取ります。さらに、データを送信する相手のネットワークアドレス(IPアドレスとポート番号)を直接指定できるため、一つのソケットから複数の異なる宛先へメッセージを送ることが可能です。これにより、送信するメッセージごとに宛先を変更できる柔軟性があります。オプションとして、送信データの開始位置を指定するオフセットも利用できます。

関数が成功した場合、実際に送信されたバイト数(データの量)を返します。もし送信に失敗した場合は、falseが返されます。この戻り値を確認することで、データが意図通りに送信されたかどうかをプログラムで判断できます。

システムエンジニアを目指す方にとって、この関数は、例えばシンプルなネットワークサービスでリアルタイムな情報(センサーデータなど)をブロードキャストする際や、高速性が求められるが、多少のデータ損失が許容されるアプリケーションを構築する際に役立ちます。TCPのようなコネクション指向の通信ではfwrite関数が使われることが多いですが、UDPのようなコネクションレスな通信で宛先を明示的に指定してデータを送る場合にstream_socket_sendto関数は非常に強力なツールとなります。

基本的な使い方

構文(syntax)

stream_socket_sendto(resource $socket, string $data, int $flags = 0, string $address = null): int|false

引数(parameters)

$socket, string $data, int $flags = 0, string $address = null

  • resource|object $socket: 送信元となるソケットリソース
  • string $data: 送信するデータ
  • int $flags = 0: 送信時のフラグ
  • string $address = null: 送信先のIPアドレスとポート番号

戻り値(return)

int|false

送信したバイト数を返します。エラーが発生した場合は false を返します。