Next: srfi.112 - 実行環境の問い合わせ, Previous: srfi.101 - 純粋に関数的でランダムアクセス可能なペアとリスト, Up: ライブラリモジュール - SRFI [Contents][Index]
srfi.106 - 基本的なソケットインタフェースポータブルなソケットインタフェースです。
Gaucheはgauche.netモジュールで包括的なネットワークAPIを提供しています
(gauche.net - ネットワーキング参照)。しかしそれはGauche特有のものです。
このsrfiはソケット操作の小さなサブセットを提供し、
簡単なネットワーキングを必要とするアプリケーションをポータブルに書けるようにします。
gauche.netと同じ名前を持ち、インタフェースが異なる手続きがあることに注意してください。
このsrfiのAPIで作られるソケットオブジェクトはGaucheの<socket>オブジェクト
そのものなので、gauche.netのAPIに渡したり、またその逆も可能です。
以下にあげる手続きはgauche.netのものと全く同一です。
説明はgauche.net - ネットワーキングを参照してください。
socket-accept socket-shutdown socket-close socket-input-port socket-output-port
[SRFI-106]{srfi.106}
ノードnodeのサービスserviceと通信するためのソケットを作って返します。
ソケットの型がコネクション指向なら(つまり、ai-socktypeが
*sock-stream*なら、これはデフォルトですが)、
返されるソケットは既にコネクトされた状態になっています。
nodeとserviceは文字列でなければなりません。
nodeはgetaddrinfo(3)に渡されてサーバのIPアドレスに解決されます。
serviceが数字のみで構成されていた場合はポート番号とみなされます。
省略可能引数のデフォルト値は次の通りです:
ai-familyは*af-inet*、
ai-socktypeは*sock-stream*、
ai-flagsは(socket-merge-flags *ai-v4mapped* *ai-addrconfig*)、
そしてai-protocolは*ipproto-ip*。
有効なフラグの種類については下を参照してください。
gauche.netのmake-client-socketとはAPIが異なることに注意してください。
(make-client-socket "127.0.0.1" "80") ⇒ a <socket> connected to port 80 of localhost
[SRFI-106]{srfi.106} serviceで指定されるポートで待ち受けるサーバソケットを作って返します。 serviceは文字列でなければなりません。serviceが全て数字で構成されていた 場合はポート番号と解釈されます。
省略可能引数のデフォルト値は次の通りです:
ai-familyは*af-inet*、
ai-socktypeは*sock-stream*、
ai-protocolは*ipproto-ip*。
有効なフラグの種類については下を参照してください。
gauche.netのmake-server-socketとはAPIが異なることに注意してください。
[SRFI-106]{srfi.106}
(is-a? obj <socket>)と同じです。
[SRFI-106]{srfi.106}
gauche.netのsocket-sendとほぼ同じですが、
gauche.netのものが文字列も引数に取ることができるのに対し、
こちらはu8vectorのみを受け付けます。
実際に送られたオクテット数を返します。
[SRFI-106]{srfi.106}
gauche.netのsocket-recvに似ていますが、こちらは
文字列ではなくu8vectorを返します。もし通信の相手がコネクションを閉じていた場合は、
空のu8vector #u8()が返されます。
size引数は受信データの最大のサイズを指定します。 受信データがそれより小さい場合は返されるベクタもそれに合わせて短くなります。
このsrfiでは、典型的なソケットフラグを表す定数と、 名前からフラグ値を求めるマクロも提供しています。
[SRFI-106]{srfi.106}
与えられたflag …をビット演算でマージします。
Gauche組み込みのlogiorと実質的に同じです。
[SRFI-106]{srfi.106} base-flagのビットのうち、flag …で示されるビットを0にします。
*af-inet* | AF_INET |
*af-inet6* | AF_INET6 |
*af-unspec* | AF_UNSPEC |
[SRFI-106]{srfi.106}
nameがシンボルinet、inet6、unspecのいずれかであれば、
それぞれ*af-inet*、*af-inet6*、*af-unspec*の値へと展開されます。
nameがそれ以外のオブジェクトならエラーが報告されます。
*sock-stream* | SOCK_STREAM |
*sock-dgram* | SOCK_DGRAM |
[SRFI-106]{srfi.106}
nameがシンボルstream、datagramのいずれかであれば、
それぞれ*sock-stream*、*sock-dgram*の値へと展開されます。
nameがそれ以外のオブジェクトならエラーが報告されます。
*ai-canonname* | AI_CANONNAME |
*ai-numerichost* | AI_NUMERICHOST |
*ai-v4mapped* | AI_V4MAPPED |
*ai-all* | AI_ALL |
*ai-addrconfig* | AI_ADDRCONFIG |
[SRFI-106]{srfi.106}
シンボルcanoname、numerichost、
v4mapped、all、addrconfigの組み合わせを、
対応するビットフラグの組み合わせへと展開します。
他のシンボルが渡された場合はエラーが報告されます。
(註: *ai-canonname*に対応するのはcanonameです)。
*ipproto-ip* | IPPROTO_IP |
*ipproto-tcp* | IPPROTO_TCP |
*ipproto-udp* | IPPROTO_UDP |
[SRFI-106]{srfi.106}
シンボルip、tcp、and udpを
それぞれ対応するフラグの値へと展開します。
他のシンボルが渡されたらエラーを報告します。
*msg-none* | 0 |
*msg-peek* | MSG_PEEK |
*msg-oob* | MSG_OOB |
*msg-waitall* | MSG_WAITALL |
[SRFI-106]{srfi.106}
シンボルnone、peek、
oob、wait-allの組み合わせを、
対応するビットフラグの組み合わせへと展開します。
他のシンボルが渡された場合はエラーが報告されます。
(註: *msg-waitall*に対応するのはwait-allです)。
*shut-rd* | SHUT_RD |
*shut-wr* | SHUT_WR |
*shut-rdwr* | SHUT_RDWR |
[SRFI-106]{srfi.106}
シンボルcodeとwriteの組み合わせを対応するビットマスクの値へと展開します。
他のシンボルが渡された場合はエラーが報告されます。
Next: srfi.112 - 実行環境の問い合わせ, Previous: srfi.101 - 純粋に関数的でランダムアクセス可能なペアとリスト, Up: ライブラリモジュール - SRFI [Contents][Index]