Kimura Fuyuki
fuyuk****@hadal*****
2003年 5月 3日 (土) 12:29:26 JST
At Thu, 01 May 2003 13:10:55 +0900, Kimura Fuyuki <fuyuk****@hadal*****> wrote: > > 高レベルインターフェースにどうやってIPv6を混ぜこむかはまだ考えていませ > ん。基本的にはv6からv4にフォールバックするべきだろうと思うんですが、ど > ちらかに強制できたほうがいい場合もありそうです。 考えがまとまったので、先にこっちをやりました。テストをお願いします。 (ipv6-capableというのは暫定のフラグです。いまだにどのタイミングで何が 束縛されるのか理解してない…) http://www.hadaly.org/fuyuki/gauche-ipv6.patch-2 make-client-socket, make-server-socket 共に、IPv6が有効な場合は、 getaddrinfo で得られたアドレスのうち、最初に connect/listen に成功した ものを使います。後者については「成功したものすべて」のほうが正しい動作 かもしれませんが、それが必要なら make-server-sockets を新設すべきでしょ う。 要するに、make-client/server-socket を使った既存のコードがそのままで 「IPv6対応」になるようにしたわけです。 たとえば、次のようなスクリプトでIPv6 で接続しているかどうかを判定でき ます。 (use rfc.http) (define (main args) (let* ((html (values-ref (http-get "www.ipv6.org" "/") 2)) (m (rxmatch #/You are using IPv./ html))) (print (rxmatch-substring m)))) サーバのテストには examples/echo-server.scm がいいでしょう。IPv6が有効 になっている環境でこれを起動すると、[::]:3131 を listen するはずです。 -- 木村 冬樹