У меня есть TCP-сокет, связанный с 127.0.0.1
и я хочу сделать его доступным в качестве службы на локальной машине. Проблема, однако, в том, что Bonjour использует адрес DHCP вместо localhost, даже если kDNSServiceInterfaceIndexLocalOnly
установить в качестве интерфейса. Это мешает мне на самом деле подключиться к розетке.
Так как мне сделать так, чтобы служба разрешала 127.0.0.1
скорее, чем 192.168.xxx.xxx
?
Я использую последнюю версию Bonjour SDK для Windows на C ++, хотя она должна работать одинаково на всех операционных системах.
В настоящее время я использую только следующий вызов функции для регистрации службы:
DNSServiceRef ref = m_Impl->m_ConnectionRef.get();
DNSServiceRegister(&ref, kDNSServiceFlagsShareConnection, // Handles and flags
kDNSServiceInterfaceIndexLocalOnly, a_Name.c_str(), a_Service.GetServiceType().c_str(), nullptr, // Service name and type
nullptr, HostToBigEndian(a_Service.GetPort()), // Host address
static_cast<uint16>(a_Service.GetTXTRecord().GetRecord().length()), a_Service.GetTXTRecord().GetRecord().c_str(), // TXT record
&MDNSServiceManagerImpl::StaticDNSServiceRegisterReply, service.get()); // Callback
Я пытался пройти "127.0.0.1"
в качестве имени хоста вместо nullptr
, но, как говорится в комментариях API, вам придется вручную добавлять записи, и именно здесь я заблудился.
Задача ещё не решена.
Других решений пока нет …