2009-12-23 102 views
1

我正在研究在EPOS终端的Windows应用程序中使用Peer 2 Peer和WCF的可能性。WCF IPv6端点

该应用程序将位于本地网络中的一些PC上;每台PC只会有一个应用程序实例。

我目前的想法是,我的应用程序启动并加入对等网格,加入网格时,它周期性地发出包含其终端ID和IPv6地址的“心跳”消息。

加入网格的任何其他终端都会接收这些心跳并在网络中维护自己的终端列表。

应用程序内的操作将需要访问网络上的特定终端。因此,应用程序解决了终端ID为IP地址,并且可以生成一个URI使用链路本地地址

printingHostRemote = New ServiceHost(printSpooler, New Uri("net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService)) 
printingHostRemote.AddServiceEndpoint(GetType(IPrintingService), tcpPipeBinding, "net.tcp://" & myNetworkAddress & "/" & ServiceNames.PrintingService) 

字符串设置通过的net.tcp访问服务

我已经发布了服务端点端点将是,例如:

“的net.tcp:// [FE80 :: 250:56ff:FEC0:8%4]:5555/GSS-POS/PrintingService”

然而,当我尝试访问此服务我得到一个错误,说主机无法访问。

TCP错误代码10065:套接字操作尝试一个无法连接的主机FE80 :: 290:5FF:FE01:6303%4:5555

我意识到这是记在我有限的IPv6寻址知识。我应该为我的端点使用什么地址(我正在使用链接本地IPv6地址)?或者我的整体概念有缺陷?

TIA,

西蒙

回答

0

好吧,我想我现在明白这一点。

我的开发机器安装了VMWare,因此有两个其他网络接口。我需要将我想要使用的本地网络接口的范围附加到远程机器的IP6地址。

0

我实际上正在运行一个客户端/服务器(网络层)/数据库设置,我写为一个商业解决方案,我的业务合作伙伴的现场互联网(康卡斯特)让他成立了这样一种方式,IPV6是只有这样他才能访问局域网内的东西,而之前只有IPV4以外的东西。我设法将它映射到正确的机器地址,并且获得了IPV6双方的工作,但是您所描述的......是我在原始IPV6地址中遇到的情况。我为我使用的域名创建了一个AAAA记录,并将其转发到路由器上的正确机器上...如果你这样做了,一旦它解决了,它就可以工作,但是你不能使用十六进制,你必须使用域名。或者至少这是它为我工作的方式。我很想知道为什么它不会占用十六进制地址。