ZeroConf c# iOS не видит сервер

290
14 ноября 2021, 17:20

Использую этот приведенный код для публикации сервера с помощью ZeroConf

static async Task Main(string[] args)
        {
            var macAddress = (
                    from nic in NetworkInterface.GetAllNetworkInterfaces()
                    where nic.OperationalStatus == OperationalStatus.Up
                    select nic.GetPhysicalAddress().ToString()
            ).FirstOrDefault();
            RegisterService airplayService = new RegisterService();
            RegisterService raopService = new RegisterService();
            TxtRecord airplayTxtRecord = new TxtRecord();
            TxtRecord raopTxtRecord = new TxtRecord();
            raopTxtRecord.Add("txtvers", "1");
            raopTxtRecord.Add("ch", "2");
            raopTxtRecord.Add("cn", "0,1,2,3");
            raopTxtRecord.Add("da", "true");
            raopTxtRecord.Add("et", "0,3,5");
            raopTxtRecord.Add("md", "0,1,2");
            raopTxtRecord.Add("pw", "false");
            raopTxtRecord.Add("sv", "false");
            raopTxtRecord.Add("sr", "44100");
            raopTxtRecord.Add("ss", "16");
            raopTxtRecord.Add("tp", "UDP");
            raopTxtRecord.Add("vn", "65537");
            raopTxtRecord.Add("vs", "130.14");
            raopTxtRecord.Add("am", "AppleTV2,1");
            raopTxtRecord.Add("sf", "0x4");
            raopService.Name = macAddress + "@" + "AirPlay Receiver";
            raopService.RegType = "_raop._tcp";
            raopService.ReplyDomain = "local.";
            raopService.UPort = 49152;
            raopService.TxtRecord = raopTxtRecord;
            raopService.Register();
            airplayTxtRecord.Add("deviceid", macAddress);
            airplayTxtRecord.Add("features", "0x39f7");
            airplayTxtRecord.Add("model", "AppleTV2,1");
            airplayTxtRecord.Add("srcvers", "130.14");
            airplayService.Name = macAddress + "@" + "AirPlay Receiver";
            airplayService.RegType = "_airplay._tcp";
            airplayService.ReplyDomain = "local.";
            airplayService.Port = 7000;
            airplayService.TxtRecord = airplayTxtRecord;
            airplayService.Register();
            Console.ReadLine();
        } 

но iOS не видит сервер какие параметры я не менял бы! Проверял программу-проигрыватель airplay и там все работает... Буду очень благодарен за помощь!

Answer 1

В итоге мне пришлось с помощью dns-sd найти сервисы которые видит мой айфон и вытащить информацию из них... получилось что-то вроде этого :

    static void Main(string[] args)
    {
        string nameService = "HOME"; // имя сервиса отображаемого в айфоне
        var macAddress = (
                from nic in NetworkInterface.GetAllNetworkInterfaces()
                where nic.OperationalStatus == OperationalStatus.Up
                select nic.GetPhysicalAddress().ToString()
        ).FirstOrDefault();
        RegisterService airplayService = new RegisterService
        {
            Name = nameService,
            RegType = "_airplay._tcp",
            ReplyDomain = "local.",
            Port = 7000,
            TxtRecord = new TxtRecord
            {
                { "deviceid", string.Join(":", Enumerable.Range(0, 6).Select(i => macAddress.Substring(i * 2, 2)))},
                { "features", "0x5a7fdfd1" },
                { "flags", "0x4" },
                { "model", "AppleTV3,2"},
                { "pi", "F43DAF5B-0370-4519-ABFE-70CE34167732" },
                { "pk", "f4a0677afa113db13145c81d5a673014bb9ffaafc5c7724ec0558030b27f5d73" },
                { "srcvers", "220.68"},
                { "vv", "2" }
            }
        };

        RegisterService raopService = new RegisterService
        {
            Name = macAddress + "@" + nameService,
            RegType = "_raop._tcp",
            ReplyDomain = "local.",
            UPort = 49152,
            TxtRecord = new TxtRecord
            {
                { "am", "AppleTV3,2"},
                { "cn", "0,1,2,3" },
                { "da", "true"},
                { "et", "0,3,5"},
                { "ft", "0x5a7fdfd1"},
                { "md", "0,1,2"},
                { "pk", "f4a0677afa113db13145c81d5a673014bb9ffaafc5c7724ec0558030b27f5d73"},
                { "sf", "0x4"},
                { "tp", "UDP"},
                { "vn", "65537"},
                { "vs", "220.68}"},
                { "vv", "2"}
            }
        };
        raopService.Register();

        airplayService.Register();
        Console.ReadLine();
    }
READ ALSO
Аналог LIKE (поиск подстроки) в LINQ

Аналог LIKE (поиск подстроки) в LINQ

Как переделать данный запрос, чтобы было что-то вроде

124
Описание методов в отдельном классе или классе формы C#

Описание методов в отдельном классе или классе формы C#

Если я создаю программу, которая читает данные сxml документа, стоит ли кидать методы работающие со значениями из документа в отдельный класс?...

81
Как получить в представлении IQueryable<>?

Как получить в представлении IQueryable<>?

Я пробовал писать вот так

202
Как подключить Dependencies к NuGet в проекте?

Как подключить Dependencies к NuGet в проекте?

Подскажите, пожалуйстаКак подключить Dependencies к NuGet в проекте? NuGet создавал, как описано в доках майкрософт Создание и публикация пакета NuGet с помощью...

119