SENDTO

SENDTO コマンドを使用して、ソケット記述子で出力メッセージを送信します。このコマンドは、パラメーターとして宛先アドレスが組み込まれている点が、SEND コマンドとは異なります。

主にこのコマンドは UDP または RAW などのコネクションレス・プロトコルを使用してデータを送信するために使用されます。ソケットが接続されているかどうかに関係なく UDP ソケットでデータグラムを送信するために、SENDTO コマンドを使用します。

ガイドライン:
  • TCP または接続されている UDP ソケットの場合、SEND コマンドを使用する。
  • SO_ASCII ソケット・オプションが有効になっている場合、受信データは EBCDIC から ASCII に変換されます。

フォーマット

構文図を読む構文図をスキップする
>>-SOCKET--(--"SENDTO"--,--socketid--,--data--,----------------->

>--+-----------+--,--name--)-----------------------------------><
   '-sendflags-'               

パラメーター

socketid
ソケット・ディスクリプター。
data
送信するデータ。
sendflags
データの送信方法を指定するオプション・フラグ。以下のフラグがサポートされています。
MSG_DONTROUTE
データを経路指定しません。経路指定は、呼び出し側プログラムによって操作されます。DONTROUTE 値もサポートされます。
name
データ送信先のリモート・ホストのソケット名。
name パラメーターのフォーマットは、ソケット・タイプに応じて異なります。
AF_INET ソケット (IPv4)
name = "domain portid ipaddress"
AF_INET6 ソケット (IPv6)
name = "domain portid flowinfo ipaddress scopeid"
ここで、
  • domain 値は、AF_INET では 10 進数の 2、AF_INET6 では 10 進数の 19 です。
  • portid 値はポート番号です。
  • ipaddress 値はリモート・ホストの IP アドレスです。これは、AF_INET の場合は IPv4 アドレス、AF_INET6 の場合は IPv6 アドレスになります。
  • flowinfo 値は 0 でなければなりません。
  • scopeid 値は、ipaddress フィールドに指定されたアドレスの有効範囲に適切なインターフェースを識別します。リンク・ローカル IP アドレスの場合、scopeid フィールドは、インターフェースのセットを識別するリンク索引を指定することができます。他のすべての有効範囲に対しては、scopeid フィールドは 0 に設定します。scopeid フィールドを 0 に設定するということは、任意のアドレス・タイプおよび有効範囲を指定できることを示しています。

戻り値

このコマンドは、戻りコードと送信されたデータ量を指定する整数を含むストリングを戻します。例えば、0 192戻りコードは 0、REXX ソケット API エラー番号、またはソケット・コマンドによって設定される REXX TCP/IP エラー番号になります。戻りコード 0 は、要求されたソケット・コマンドが正常に完了したことを示しています。

このコマンドによって戻される数値エラー・コードの追加情報については、ソケット呼び出しのエラー戻りコードを参照してください。

次のような REXX TCP/IP エラー番号が戻されます。
  • 4 EINTR
  • 9 EBADF
  • 5 EIO
  • 22 EINVAL
  • 32 EPIPE
  • 35 EWOULDBLOCK
  • 38 ENOTSOCK
  • 40 EMSGSIZE45 EOPNOTSUPP
  • 54 ECONNRESET
  • 57 ENOTCONN
次のような REXX ソケット API エラー番号が戻されます。
  • 2001 EINVALIDRXSOCKETCALL
  • 2005 ESUBTASKNOTACTIVE
  • 2009 ESOCKETNOTDEFINED

LE C/C++ 等価

int sendto(int socket, char *buffer, int length, int flags, struct sockaddr 
	*address, int address_len);

コード例

SENDTO コマンドの使用例については、RECVFROMを参照してください。