我正在研究在用于 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,
西蒙