1

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

西蒙

4

2 回答 2

0

好的,我想我现在明白了。

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

于 2009-12-23T17:24:21.153 回答
0

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

于 2017-07-05T10:45:29.207 回答