Пример CFNetServiceCallBack - PullRequest
       59

Пример CFNetServiceCallBack

0 голосов
/ 09 марта 2012

Я только начинаю писать небольшое приложение для 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 Ответ

0 голосов
/ 10 марта 2012

Я нашел ответ - как правило, прямо у меня под носом!

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;

}

Я думаю, что я лаю не на том дереве, хотя, вероятно, я не получу никакогоближе к получению файловой директории удаленного диска ....

...