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を参照してください。
