【发布时间】:2009-12-23 16:10:11
【问题描述】:
我正在研究在用于 EPoS 终端的 Windows 应用程序中将 Peer 2 Peer 与 WCF 一起使用的可能性。
该应用程序将位于本地网络中的多台 PC 上;每台 PC 上只有一个应用实例。
我目前的想法是我的应用程序启动并加入对等网格,在加入网格时,它会定期喊出包含其终端 ID 和 IPv6 地址的“心跳”消息。
任何其他加入网格的终端都会收到这些心跳,并在网络中维护自己的终端列表。
应用内的操作需要访问网络上的特定终端。因此,应用程序将终端 id 解析为 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,
西蒙
【问题讨论】: