マルチキャスト受信
【機能】
指定ソケットに対するマルチキャストデータパケットをUDP受信します。
【関数】
int MulticastRecv( int sck, char *data, int size ,int *tofrom )
|
{
|
return trapa_svc( 0xa4, pid, sck, data, size, tofrom );
|
}
|
【入力】
sck
| ソケット番号
| 「ソケット」ファンクションで取得した識別番号
|
data
| 受信データ
| 受信データを格納する領域の先頭アドレス
|
size
| サイズ
| 受信データを格納する領域のサイズ
|
tofrom
| 宛先・送信元情報
| 宛先・送信元情報を格納する領域の先頭アドレス
|
【出力】
| +0
+1
+2
+3
| | | |
tofrom+00
宛先のマルチキャストグループIPアドレス
| |
tofrom+04
送信元のIPアドレス
| |
tofrom+08
送信元のポート番号
|
パケット種別
| |
パケット種別
| 0
| UDPユニキャストパケット
|
| 1
| UDPブロードキャスト
|
| 2
| UDPマルチキャスト
|
| ERR_PARAM
| パラメータエラー
|
| ERR_PID
| 不正プロセスID
|
| ERR_LANCLOSED
| LAN未オープン
|
| ERR_NOSOCKET
| ソケット番号が無効
|
| ERR_NOUDP
| UDPソケットでない
|
| ERR_NOBIND
| バインドされていない
|
| ERR_MULTINOREG
| マルチキャスト登録なし
|
【解説】
システムが受信した指定ソケットに対する受信パケットデータを、指定されたアドレスに格納し、宛先および送信元のアドレス情報・受信パケット種別と共に返します。
受信したパケットデータが受信データを格納する領域のバイト数より大きい場合、指定バイト数を超える受信データは破棄されます。
受信可能なパケットの最大サイズは、5094バイトです。
受信パケットがない場合、リターンコード0で直ちに復帰します。(非ブロック)
受信データを格納する領域の先頭アドレス・送信元のアドレス情報を格納する領域のアドレスがNULLの場合、または受信データを格納する領域のバイト数が0の場合、パラメータエラーになります。
【関連項目】
マルチキャスト送信 パケット受信
【注意】
「パケット受信」ファンクションで受信することも可能ですが、その場合、「宛先マルチキャストグループアドレス」情報および「パケット種別」情報の一部が取得できません。