Использую этот приведенный код для публикации сервера с помощью 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 и там все работает... Буду очень благодарен за помощь!
В итоге мне пришлось с помощью 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();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Если я создаю программу, которая читает данные сxml документа, стоит ли кидать методы работающие со значениями из документа в отдельный класс?...
Подскажите, пожалуйстаКак подключить Dependencies к NuGet в проекте? NuGet создавал, как описано в доках майкрософт Создание и публикация пакета NuGet с помощью...