Я изучаю возможность использования Peer 2 Peer вместе с WCF в приложении Windows для терминала EPoS.
Приложение будет установлено на нескольких компьютерах в локальной сети; на каждом ПК всегда будет только один экземпляр приложения.
В настоящее время я думаю, что мое приложение запускается и присоединяется к одноранговой сетке, при присоединении к ней оно периодически выкрикивает сообщение «сердцебиение», которое содержит его идентификатор терминала и IPv6-адрес.
Любые другие терминалы, присоединяющиеся к сети, получают эти контрольные сигналы и поддерживают свой собственный список терминалов в сети.
Действия в приложении потребуют доступа к определенному терминалу в сети. Таким образом, приложение преобразует идентификатор терминала в IP-адрес и может сгенерировать Uri для доступа к службе через net.tcp.
Я опубликовал конечную точку службы, используя локальный адрес ссылки
printingHostRemote = New ServiceHost(printSpooler, New Uri("net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService))
printingHostRemote.AddServiceEndpoint(GetType(IPrintingService), tcpPipeBinding, "net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService)
Строка для настройки конечной точки будет, например, такой:
"net.tcp: // [fe80 :: 250: 56ff: fec0: 8% 4]: 5555 / GSS-POS / PrintingService"
Однако, когда я пытаюсь получить доступ к этой службе, я получаю сообщение об ошибке, что хост недоступен.
Код ошибки TCP 10065: попытка выполнения операции сокета на недоступном хосте fe80 :: 290: 5ff: fe01: 6303% 4: 5555
Я понимаю, что это связано с моими ограниченными знаниями об адресации IPv6. Какой адрес я должен использовать для своей конечной точки (я использую локальный IPv6-адрес ссылки)? Или моя общая концепция ошибочна?
TIA,
Саймон