我刚刚开始编写一个小型iPhone / iPad应用程序来浏览网络存储,并希望搜索可用的磁盘。我认为我在使用CFNetService和相关功能方面走在正确的轨道上,但我现在非常喜欢这方面的帮助:
有人会介意发布CFNetServiceCallBack函数的示例,就像在以下示例中的“gServiceBrowserRef”设置中的“MyBrowseCallBack”一样,来自Apple的文档:
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 :(得分: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;
}
我认为我正在咆哮错误的树,但它可能不会让我更接近获得远程磁盘的文件目录....