2012-03-09 2 views
0

私はちょうどネットワークストレージをブラウズするための小さなiPhone/iPadアプリを書いていて、利用可能なディスクを探したいと思っています。私はCFNetServiceと関連する関数を正しく実行していると思いますが、この時点で少し助けてください:CFNetServiceCallBackの例

"MyBrowseCallBack"のようにCFNetServiceCallBack関数の例を投稿してもらえませんか? Appleのドキュメントのから次の例では "gServiceBrowserRef" セットアップ:

static Boolean MyStartBrowsingForServices(CFStringRef type, CFStringRef domain) { 

CFNetServiceClientContext clientContext = { 0, NULL, NULL, NULL, NULL }; 

CFStreamError error; 

Boolean result; 



assert(type != NULL); 



gServiceBrowserRef = CFNetServiceBrowserCreate(kCFAllocatorDefault, MyBrowseCallBack, &clientContext); 

assert(gServiceBrowserRef != NULL); 



CFNetServiceBrowserScheduleWithRunLoop(gServiceBrowserRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes); 



result = CFNetServiceBrowserSearchForServices(gServiceBrowserRef, domain, type, &error); 

if (result == false) { 



    // Something went wrong so lets clean up. 

    CFNetServiceBrowserUnscheduleFromRunLoop(gServiceBrowserRef, CFRunLoopGetCurrent(), kCFRunLoopCommonModes);   CFRelease(gServiceBrowserRef); 

    gServiceBrowserRef = NULL; 



    fprintf(stderr, "CFNetServiceBrowserSearchForServices returned (domain = %d, error = %ld)\n", error.domain, error.error); 

} 



return result; 

}

私は、正直なドキュメントを読んでいます!私が個人的に話題を研究するのは難しいと思っています(ネットワークコーディングに初めて参加しました)、ちょうど正しい方向に向かって少し話題になります。たとえそれが "MyBrowseCallBack"に必要な機能の署名を示す唯一の例であっても、

答えて

0

私は答えを見つけました。

私はおそらくどの近いリモートディスクのファイルのディレクトリを得るために私を取得するつもりはない、しかし間違ってツリーを吠えていると思う
void clientCB (CFNetServiceBrowserRef browser,CFOptionFlags flags,CFTypeRef domainOrService,CFStreamError* error,void* info) 
{ 
NSLog(@"Found browser: %@",domainOrService); 
CFStreamError anError; 
if ((flags && kCFNetServiceFlagMoreComing) != kCFNetServiceFlagMoreComing) { 
    NSLog(@"That'll be all..."); 
    CFNetServiceBrowserStopSearch(browser, &anError); 
    return; 
} 
return; 

}

....