Network 0x5b


パケット受信


【機能】

 指定ソケットに対するデータパケットをUDP受信します。

【関数】

 int RecvFrom( int sck, char *data, int size ,int *from )
 {
   return trapa_svc( 0x5b, pid, sck, data, size, from );
 }

【入力】

 sck ソケット番号 「ソケット」ファンクションで取得した識別番号
 data 受信データ 受信データを格納する領域の先頭アドレス
 size サイズ 受信データを格納する領域のサイズ
 from 送信元情報 送信元情報を格納する領域の先頭アドレス

【出力】

 リターンコード 0以上 受信データバイト数
+0
+1
+2
+3
from+00
送信元のIPアドレス
from+04
送信元のポート番号
パケット種別

 パケット種別 0 UDPユニキャストパケット
1 UDPブロードキャスト・マルチキャスト

ERR_PARAM パラメータエラー
ERR_PID 不正プロセスID
ERR_LANCLOSED LAN未オープン
ERR_NOSOCKET ソケット番号が無効
ERR_NOUDP UDPソケットでない
ERR_NOBIND バインドされていない

【解説】

 システムが受信した指定ソケットに対する受信パケットデータを、指定されたアドレスに格納し、送信元のアドレス情報・受信パケット種別と共に返します。
 受信したパケットがブロードキャストパケットの場合には、パケット種別に1が返されます。

 受信したパケットデータが受信データを格納する領域のバイト数より大きい場合、指定バイト数を超える受信データは破棄されます。
 受信可能なパケットの最大サイズは、5094バイトです。

 受信パケットがない場合、リターンコード0で直ちに復帰します。(非ブロック)

 受信データを格納する領域の先頭アドレス・送信元のアドレス情報を格納する領域のアドレスがNULLの場合、または受信データを格納する領域のバイト数が0の場合、パラメータエラーになります。