Apple Bonjour服务绑定到localhost

时间:2016-10-25 14:58:11

标签: c++ windows networking bonjour dns-sd

我有一个绑定到127.0.0.1的TCP套接字,我希望它在本地计算机上作为服务提供。但问题是Bonjour使用DHCP地址而不是localhost,即使将kDNSServiceInterfaceIndexLocalOnly设置为接口也是如此。这可以防止我实际连接到套接字。

那么我该怎么做才能让服务解析为127.0.0.1而不是192.168.xxx.xxx

我在C ++中使用最新的bonjour SDK for Windows,尽管它在所有操作系统上应该都是一样的。

目前我只使用以下函数调用来注册服务:

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评论所说,您必须手动添加记录,这就是我迷路的地方。

0 个答案:

没有答案
相关问题