0

我刚刚开始编写一个小型 iPhone/iPad 应用程序来浏览网络存储并希望搜索可用磁盘。我认为我在 CFNetService 和相关功能方面走在了正确的轨道上,但在这一点上我希望能得到一些帮助:

有人介意在 Apple 文档的以下示例中的“gServiceBrowserRef”设置中的“MyBrowseCallBack”中发布一个 CFNetServiceCallBack 函数的示例:

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”所需函数签名的示例

4

1 回答 1

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;

}

我想我是在叫错树,它可能不会让我更接近获取远程磁盘的文件目录....

于 2012-03-10T15:30:46.090 回答