Qt5 での IPv6 の変更点

この記事は Qt Blog の "IPv6 changes in Qt5" を翻訳したものです。
執筆: Markus Goetz, 2011年7月5日

皆さんご存じだと思いますが、Qt は IPv6 を以前からサポートしていますが、
Qt をさらに使いやすくするために Qt5 に向けて IPv6 に関連するいくつかの変更を行いました。

Shane は TCP および UDP ソケットのバインディングサポートの改良を行いました。元々、IPv4 の任意のアドレス(0.0.0.0)を示す QHostAddress::Any が有りました。その後、IPv6 の任意のアドレスを示す QHostAddress::AnyIPv6 が導入されました。これに変更を加え、QHostAddress::Any は任意の IPv4/IPv6 アドレスを示し、0.0.0.0 用に QHostAddress::AnyIPv4 を新たに加えました。

Martin は QNetworkAccessManager の HTTP コードに [qtbug QTBUG-16458 'IPv6 の接続機構である "Happy Eyeballs" の一種の実装'] をしました。
これは、Web サーバに接続する際に使う方法の一時的な手段になります。OS が IPv4 と IPv6 の双方をサポートしていて、その双方が接続可能な場合、接続する HTTP サーバの DNS から双方のアドレスが取得できれば IPv4 と IPv6 で接続を試みます。
最初に接続を確立した種類のアドレスが、その後のこのサーバへの接続に用いられます。ここでの目標は、IPv6/IPv4 のパケットがどこかで欠落する可能性によって、タイムアウトが生じてユーザ体験が悪化するのに対処することです。

将来に渡って IPv6 を真剣にサポートすることを示すために、QT_NO_IPV6 を定義したコンパイルのサポートを削除しました。Qt5 が動く全てのプラットフォームで、IPv6 がサポートされているはずです。

4.8 ブランチのことを忘れてはいません。Qt 4.8 では Symbian で IPv6 がサポートされます。ベータのリリースがすぐそこに迫っていると聞きました。お楽しみに。


Blog Topics:

Comments