タイトルNetwork Services Locationを使うAPIのサンプルプログラムカテゴリーアップルからの開発資料, ネットワーク
作成日2001/6/11 17:16:43作成者新居雅行
サンプルコードに公開されている「NSLMiniBrowser」は、NSL(Network Services Location)を使ったサーバ一覧などを取得するためのプロトコルを利用できるAPIの使い方を示したものだ。おそらくは、階層構造のリストにサーバ一覧が表示されるものと思われるが、プログラム自体は筆者のシステムでは稼働しなかった(理由は後述)。AppleShareファイルサーバなどの一覧をNSLでブラウズして、そして接続するということはシステムでサポートされた機能となっている。Mac OS 9ではネットワークブラウザ、Mac OS XではFinderにその機能が統合されている。その意味ではMac OSではNSLを積極的に使っているため、ネットワーク関連のアプリケーションを作成するときなどには使う機会もあるかもしれない。サンプルプログラムでは、DataBrowserのコントロールを使っており、そのサンプルにもなるだろう。Project BuilderおよびCodeWarriorのプロジェクトが添付されている。CarbonLib 1.3以降に対応する。以下は、サンプルプログラムのアドレスと、NSL Managerのアドレスだ。

◇NSLMiniBrowser 1.0
 http://developer.apple.com/samplecode/Sample_Code/Networking/NSLMiniBrowser.htm

◇Network Services Location Manager
 http://devworld.apple.com/techpubs/macosx/Networking/NSL/index.html

サンプルプログラムでは、Core Foundationで提供されているCFStringで文字列を管理している。CFStringから文字列を取り出すために、文字列が保存されているアドレスを取得するAPIを利用するが、その戻り値が0(NULL)の場合があり、その場合は代替の手段で文字列を独自にメモリに展開して利用する必要がある。このことは、CFStringの文書にはっきりと記載されているが、MSLMiniBrowserのプログラムでは戻り値が0の場合の処置をしていない。そのため、ポインタ値として0を引き渡して文字列比較の関数を呼び出しているため、そこでアドレスエラーが出てアプリケーションは落ちてしまう。もしかすると、英語システムではそうしたNULLを戻したときの処理は記述しないでもかまわないのかもしれないが、少なくとも、筆者のシステム(日本語に設定)では正しく稼働はしなかった。アプリケーションは起動するが、リストの項目を展開しようとするとアプリケーションが落ちてしまう。
関連リンク