【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 を返します。