如何更改 SRV 记录格式

How to change SRV record format

我使用 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

除了您的问题在这里是题外话因为与编程没有真正相关之外,您不能“更改”SRV 记录的格式。这些记录必须采用“_service._protocol”作为前缀的格式。

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

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

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