久しぶりの更新

やっとのことでpcbnet2 PB2とhspsvcを公開しました.ふぅ.

pcbnet2 PB2の更新点は,

  • udpsendto命令に非IPアドレスを渡した際,ホスト名の解決に失敗するバグを修正.
    • 致命的.
  • TCPにおける送信・受信バッファの効率を改善.
    • 小刻みにデータを送られると,メモリがどんどんフラグメンテーションしてしまっていたので,最小のメモリ確保サイズを決めておくことにしました.
  • UPnPNATにおいてSOAPリクエスト時にContent-Typeを送信するように修正.
    • XPのICSをONにするとそのマシンがIGDとして動作するようになるのだけれど,その実装はContent-Type: text/xmlを送らないとエラーを返すことが分かったので,応急処置的にヘッダを追加.
    • 本当は仕様書を読んで作ればいいのだけれど,全部読むのは面倒なので適当に実装してます.ごめんなさい.しかもXMLのパーシングもパーサを組み込むのが面倒なので適当に読んでます.本当にごめんなさい.とりあえず動けばいいやと思って作っているので...
  • IPv6サポートをデフォルト化.それに伴ってnetipv6命令を廃止.
    • この変更で困るとしたらIPアドレスを格納する変数がIPv4アドレスを想定したサイズしか確保されていないようなプログラムくらいだと思ったので,思い切って外しました.メモリの確保は十分にお願いします.

実は今日,初めてIPv6を使ったTCP通信に成功しました.何故かデスクトップマシンの方がIPv6のconnect()に失敗しちゃうので今までテストできなかったんですが,ノートマシンは特に問題なくconnect()できることが分かったので,デスクトップマシンにサーバーを立ててノートから接続してみたら,あっさり成功しました.なんでデスクトップマシンだとダメなんだろうなぁ… ::1への接続も弾かれるし.意味不明です.

あとはいつPublic Betaを外すかだけど,今回見つかったUDPのバグみたいな致命的なものがしばらく発見されないようならそのうち正式版にしちゃいます.本当はICMPv6も実装すれば完璧なんだけれど,ICMPv6の送り方がさっぱりわからない(実はIPv6のヘッダの構造も分かってない)ので先送りにします.誰か知ってる人居たら教えてください.(ぉ

あともうひとつ,hspsvcを公開しました.HSPでNT用サービスアプリケーションを作成する拡張ランタイムです.pcbnet2と組み合わせたりするといろいろと楽しいことができるかもしれません,が,使う際にはセキュリティに十分気をつけてください.