我有一个绑定到的 TCP 套接字127.0.0.1
,我想让它作为本地机器上的服务可用。然而问题是 Bonjour 使用 DHCP 地址而不是 localhost,即使kDNSServiceInterfaceIndexLocalOnly
设置为接口也是如此。这使我无法实际连接到套接字。
那么如何使服务解析为127.0.0.1
而不是192.168.xxx.xxx
?
我在 C++ 中使用适用于 windows 的最新 bonjour SDK,尽管它应该在所有操作系统上都一样。
目前我只使用以下函数调用来注册服务:
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
.