Пример CFNetServiceCallBack
Я только начинаю писать небольшое приложение для iPhone/iPad для просмотра сетевого хранилища и хочу найти доступные диски. Я думаю, что я на правильном пути с CFNetService и связанными функциями, но я хотел бы немного помочь в этом:
Кто-нибудь возражает против публикации примера функции CFNetServiceCallBack, как в "MyBrowseCallBack", который находится в настройке "gServiceBrowserRef", в следующем примере из документа 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"
1 ответ
Я нашел ответ - как правило, прямо у меня под носом!
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;
}
Я думаю, что я лаю не на том дереве, хотя, вероятно, это не приблизит меня к получению файловой директории удаленного диска....