0

我使用 NsdManager 注册了服务:

    public void RegisterService(string serviceName, int port, Dictionary<string, string> attributes, string serviceType = "_itxpt_http._tcp.")
    {
        var serviceInfo = new NsdServiceInfo()
        {
            ServiceName = serviceName,
            Port = port,
            ServiceType = serviceType
        };

        if (attributes != null && attributes.Count > 0)
        {
            foreach (var keyValuePair in attributes)
            {
                serviceInfo.SetAttribute(keyValuePair.Key, keyValuePair.Value ?? string.Empty);
            }
        }

        NsdManager.RegisterService(serviceInfo, NsdProtocol.DnsSd, new ListenerWrapper(_eventLogger));
    }

我得到 TXT 和 SRV 记录。SRV 记录的格式是inventory._itxpt_http._tcp.local 120 CLASS32769 SRV 0 0 8090 Android-2.local.

如何更改当前格式?我想在服务名称(库存)之后删除 DOT,我希望它看起来像这样:inventory_itxpt_http._tcp.local 120 CLASS32769 SRV 0 0 8090 Android-2.local

4

1 回答 1

0

除了您的问题在这里与编程无关这一事实之外,您不能“更改” SRV 记录的格式。这些记录必须以“_service._protocol”格式作为前缀。

因为这样inventory._itxpt_http._tcp.local的名称不能附加到SRV记录,因为它不符合规范(即使您inventory首先删除服务部分实际上也不是,因为服务部分通常是 IANA 服务列表中的一个标记)。SRV请参阅 RFC 2782 以获取有关记录如何设计以及预期如何工作和使用的更多详细信息和解释。

inventory_itxpt_http._tcp.local格式也不正确。

如果您想更多地解释您的问题以及为什么要将其记录到 SRV 记录中,因为您显然没有按照设计的方式使用它们,您可能会得到更好的答复,但可能不会出现在本网站上,除非您从编程问题开始。

于 2021-03-07T20:23:17.187 回答