Я создаю клиент, используя dns-sd api из Bonjour.Я заметил, что есть флаг kDNSServiceFlagsShareConnection, который используется для совместного использования соединения одного DNSServiceRef.
Сайт Apple сообщает:
Для эффективности клиенты, которые выполняют много одновременных операций, могут захотеть использовать одно соединение Unix Domain Socket с фоновым демоном вместо отдельного соединения для каждогосамостоятельная операция.Чтобы использовать этот режим, клиенты сначала вызывают DNSServiceCreateConnection (& MainRef), чтобы инициализировать основной DNSServiceRef.Для каждой последующей операции, которая должна совместно использовать это же соединение, клиент копирует MainRef, а затем передает адрес этой копии, устанавливая флаг ShareConnection, чтобы сообщить библиотеке, что этот DNSServiceRef не является типичным неинициализированным DNSServiceRef;это копия существующего DNSServiceRef, информация о соединении которой должна быть повторно использована.
Есть даже пример, который показывает, как использовать флаг.Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю программу, она все равно что ждать чего-то, когда я вызываю функцию с флагом.Вот код:
DNSServiceErrorType error;
DNSServiceRef MainRef, BrowseRef;
error = DNSServiceCreateConnection(&MainRef);
BrowseRef = MainRef;
//I'm omitting when I check for errors
error = DNSServiceBrowse(&MainRef, kDNSServiceFlagsShareConnection, 0, "_http._tcp", "local", browse_reply, NULL);
// After this call the program stays waiting for I don't know what
//I'm omitting when I check for errors
error = DNSServiceBrowse(&BrowseRef, kDNSServiceFlagsShareConnection, 0, "_http._tcp", "local", browse_reply, NULL);
//I'm omitting when i check for errors
DNSServiceRefDeallocate(BrowseRef); // Terminate the browse operation
DNSServiceRefDeallocate(MainRef); // Terminate the shared connection
Есть идеи?мысли?предложение