NSNetServiceBrowserを利用して見つかったNSNetServiceからは
すぐにホスト名などを取得できません。
(1) -[NSNetService resolveWithTimeout:]を呼ぶ。
(2) デリゲートメソッドnetServiceDidResolveAddress:が呼ばれたら
senderからhostnameなどを読み取る
という手順が必要になると思います。
使っているAPIがちょっと古い(-[NSNetService resolve]はdeprecated)ですが、
ADCのサンプルのPictureSharingBrowserが参考になると思います。
http://developer.apple.com/samplecode/PictureSharingBrowser/listing3.html
serviceClicked:でresolveを開始し、netServiceDidResolveAddress:で
結果を受け取っています。
ホスト名などがすぐに得られないようになっている理由は、
"NSNetServices and CFNetServices Programming Guide"の
"Resolving and Using Network Services"によると、
サービスの名前は不変の値であるのに対して、IPアドレスやポート名は
セッションごとに異なる値を取りうるから、
ということだそうです。
On Tue, 31 Mar 2009 01:46:44 -0700 (PDT), hiro wrote:
>
> 皆様お助けください。
>
> NetServiceBrowser、NetServiceを使ってアプリケーションを開発しています。
>
> そして、クライアントでは、
>
> - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser
> didFindService:(NSNetService*)aNetService moreComing:(BOOL)moreComing
> {
>
> NSLog(@"hostname = %@", [aNetService hostName]);
> NSLog(@"name = %@", [aNetService name]);
> NSLog(@"port = %d", [aNetService port]);
> NSArray* addresses = [aNetService addresses];
>
> for(NSData* data in addresses) {
> NSLog(@"address = %@", data);
> }
> }
>
> このようにコーディングしているのですが、取得できるのはnameだけで、
> hostnameは(null), portは0, addressesはサ
> イズが0で何も入ってきません。
>
--
kimura wataru