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値であるかどうかを戻す。