Конечные точки WCF IPv6

Я изучаю возможность использования 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,

Саймон


person Simon Temlett    schedule 23.12.2009    source источник


Ответы (2)


Хорошо, думаю, теперь я это понимаю.

На моей машине разработки установлена ​​VMWare и, следовательно, есть два других сетевых интерфейса. Мне нужно добавить область локального сетевого интерфейса, которую я хочу использовать, к IP6-адресу удаленного компьютера.

person Simon Temlett    schedule 23.12.2009

Я на самом деле в настоящее время использую клиент / сервер (сетевой уровень) / настройку базы данных, которую я написал как бизнес-решение, и мой бизнес-партнер в Интернете (Comcast) настроил его таким образом, что IPV6 - единственный способ, которым он может получать доступ к вещам внутри своей локальной сети, а раньше - только по IPV4 снаружи. Мне удалось сопоставить его с правильным адресом машины, и IPV6 работал с обеих сторон, но то, что вы описываете ... это то, что я испытал с необработанным адресом IPV6. Я создал запись AAAA для доменного имени, которое использую, и порт перенаправил ее на правильный компьютер на маршрутизаторе ... если вы это сделаете, как только оно разрешится, оно будет работать, но вы не можете использовать шестнадцатеричный код, вам нужно используйте доменное имя. По крайней мере, у меня это сработало. Мне было бы любопытно узнать, почему он не принимает шестнадцатеричный адрес.

person steviesama    schedule 05.07.2017