6.95. kink/socket/UDP¶
6.95.1. udp型¶
udpはメッセージベースのプロトコルのソケットである。
現在のところ、IPv4, IPv6上のUDPだけがサポートされる。以下の機能はサポートされない。
• Unixドメインのデータグラムソケット
• マルチキャスト
• Linux上のIP_PKTINFO, IPV6_PKTINFO, また他のOSの対応する機能
6.95.1.1. Udp.connect(Remote ...[$config={}])¶
connectは、ソケットのリモートアドレスを設定する。
コンフィグメソッド
• C.on_success($success): default = {}
• C.on_error($error): default = {(:Exc) Exc.raise }
アドレスが成功裏に設定された場合、connectは、引数なしで$successを末尾呼び出しする。
IOエラーが起きた場合、connectは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
Remoteはsocket_addressでなければならない。そのプロトコルファミリは、ソケットに受け入れられるものでなければならない。
$successはサンクでなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.2. Udp.bind(Local ...[$config={}])¶
bindは、ローカルアドレスをソケットに束縛する。
コンフィグメソッド
• C.on_success($success): default = {}
• C.on_error($error): default = {(:Exc) Exc.raise }
アドレスが成功裏に束縛された場合、bindは、引数なしで$successを末尾呼び出しする。
IOエラーが起きた場合、bindは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
Localはsocket_addressでなければならない。そのプロトコルファミリは、ソケットに受け入れられるものでなければならない。
$successはサンクでなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.3. Udp.close(...[$config={}])¶
closeはソケットを閉じる。
コンフィグメソッド
• C.on_success($success): default = {}
• C.on_error($error): default = {(:Exc) Exc.raise }
ソケットが成功裏に閉じた場合、closeは、$successを引数なしで末尾呼び出しする。
IOエラーが起きた場合、closeは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
$successはサンクでなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.4. Udp.receive(Max_size ...[$config={}])¶
receiveは、ソケット上でデータグラムを受け取る。
コンフィグメソッド
• C.on_success($success): default = VAL.identity
• C.on_error($error): default = {(:Exc) Exc.raise }
Max_sizeは、受け取るデータグラムのバイト数の最大値である。データグラムが指定された長さよりも長い場合、Max_sizeに切り詰められる。
receiveメソッドは、データグラムが入手可能になるか、IOエラーが起きるまで待つ。データグラムが入手可能になった場合、receiveは、datagramを引数として$successを末尾呼び出しする。IOエラーが起きた場合、receiveは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
Max_sizeは非負の整数のnumでなければならない。
$successはdatagramを取る関数でなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.5. Udp.send(Datagram ...[$config={}])¶
sendは、データグラムを指定された宛先に送る。
コンフィグメソッド
• C.on_success($success): default = {}
• C.on_error($error): default = {(:Exc) Exc.raise }
sendは書き込みバッファが空くまで、またはIOエラーが起きるまで待つ。
データグラムが書き込みバッファに書かれた場合、sendは引数なしで$successを末尾呼び出しする。
IOエラーが起きた場合、sendはexceptionを引数として$errorを末尾呼び出しする。
事前条件
Datagramはdatagram値でなければならない。
Datagramのリモートアドレスのプロトコルファミリは、ソケットに受け入れられるものでなければならない。
$successはサンクでなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.6. Udp.input¶
inputメソッドは、ソケットのinputを戻す。
inputを閉じると、ソケットが閉じられる。
6.95.1.7. Udp.output¶
outputメソッドは、ソケットのoutputを戻す。
outputを閉じると、ソケットが閉じられる。
6.95.1.8. Udp.local_address(...[$config={}])¶
local_addressは、ソケットのローカルアドレスのsocket_addressを取得する。
コンフィグメソッド
• C.on_success($success): default = VAL.identity
• C.on_error($error): default = {(:Exc) Exc.raise }
ローカルアドレスが入手可能な場合、local_addressは、socket_addressを引数として$successを末尾呼び出しする。
IOエラーが起きた場合、local_addressは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
$successは、socket_addressを取る関数でなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.9. Udp.remote_address(...[$config={}])¶
remote_addressは、ソケットのリモートアドレスのsocket_addressを取得する。
コンフィグメソッド
• C.on_success($success): default = VAL.identity
• C.on_error($error): default = {(:Exc) Exc.raise }
リモートアドレスが入手可能な場合、remote_addressは、socket_addressを引数として$successを末尾呼び出しする。
IOエラーが起きた場合、remote_addressは、exceptionを引数として$errorを末尾呼び出しする。
事前条件
$successは、socket_addressを取る関数でなければならない。
$errorは、exceptionを取る関数でなければならない。
6.95.1.10. Udp.so_sndbuf¶
so_sndbufは、SO_SNDBUFオプションの、非負の整数のnum値のrefを戻す。
6.95.1.11. Udp.so_rcvbuf¶
so_rcvbufは、SO_RCVBUFオプションの、非負の整数のnum値のrefを戻す。
6.95.1.12. Udp.so_reuseaddr¶
so_reuseaddrは、SO_REUSEADDRオプションの、bool値のrefを戻す。
6.95.1.13. Udp.so_broadcast¶
so_broadcastは、SO_BROADCASTオプションの、bool値のrefを戻す。
6.95.2. UDP.open(...[Protocol_family=PROTOCOL_FAMILY.ipv6 $config={}])¶
openは、データグラムのソケットを新しく作る。
コンフィグメソッド
• C.on_success($success): default = VAL.identity
• C.on_error($error): default = {(:Exc) Exc.raise }
• C.on_unsupported($unsupported): default = $errorを末尾呼び出しする関数
ソケットが作られた場合、openは、udp値を引数として$successを末尾呼び出しする。
IOエラーが起きた場合、openは、exceptionを引数として$errorを末尾呼び出しする。
Protocol_familyがランタイムにサポートされていない場合、openは$unsupportedを引数なしで末尾呼び出しする。
事前条件
Protocol_familyはprotocol_family値でなければならない。
$successは、udpを取る関数でなければならない。
$errorは、exceptionを取る関数でなければならない。
$unsupportedはサンクでなければならない。
6.95.3. UDP.is?(Val)¶
is?は、Valがudp値であるかどうかを戻す。