Wcf 在NetTcpBinding上指定客户端端口(和IP)

Wcf 在NetTcpBinding上指定客户端端口(和IP),wcf,wcf-binding,Wcf,Wcf Binding,无法通过NetTcpBinding指定用于服务器调用的本地客户端端口吗 NetPeerTcpBinding支持这一点——我发现很难相信没有办法在客户端上指定本地端口(以及IP地址) 我需要能够使用端口共享,如果我不知道客户端正在监听哪个端口,我就不能这样做。我将无法与另一个客户端共享端口(和IP),以便它可以连接 我找到的唯一解决办法是: 客户端A打开到服务器的连接 服务器记录客户端A的IP和端口 服务器共享此信息。具有 客户B 客户B应该能够 连接到指定IP上的客户端 和港口(理论上) 我

无法通过NetTcpBinding指定用于服务器调用的本地客户端端口吗

NetPeerTcpBinding支持这一点——我发现很难相信没有办法在客户端上指定本地端口(以及IP地址)

我需要能够使用端口共享,如果我不知道客户端正在监听哪个端口,我就不能这样做。我将无法与另一个客户端共享端口(和IP),以便它可以连接

我找到的唯一解决办法是:

  • 客户端A打开到服务器的连接
  • 服务器记录客户端A的IP和端口
  • 服务器共享此信息。具有 客户B
  • 客户B应该能够 连接到指定IP上的客户端 和港口(理论上)

我相信这就是所谓的TCP/IP NAT打孔。有这方面经验的人?

您可能不了解
NetTcpBinding
的通信模式。它是这样工作的:

  • 客户端打开与服务器的连接
  • 双向通信:客户端调用服务器,通过相同的连接获得响应
  • 双工通信:客户端调用服务器。服务器将对通道的引用存储在某处(您必须实现这一点)。一旦服务器想要通知客户端它所使用的任何存储通道,在客户端第一次调用时通过客户端建立的连接调用客户端
  • 服务器从未打开与客户端的连接。客户端不公开任何带有端口的地址以进行通信。如果您想这样做,您必须以在服务器上实现服务的方式在客户端上实现服务,并且必须手动将地址和端口发送到服务器公开的服务


    与NetPeerTcpBinding的区别在于,没有真正的服务器,任何客户机都必须能够获得输入请求
    NetTcpBinding
    用于客户端-服务器场景,其中服务器是唯一能够处理输入请求的对等方。因此,只有服务器需要定义地址和端口。

    澄清一下:当你说端口共享时,你的意思是服务器上的多个应用程序应该共享同一端口,对吗?因此,如果服务的目标是在intranet环境中记录客户端的IP地址和端口号,在网络中没有办法做到这一点?