指定WCF客户端源端口

时间:2012-01-13 14:48:36

标签: c# .net wcf tcp port

我在某个地址上发布了WCF服务,我希望通过在Visual Studio中生成的代理与它进行通信。

我希望来自我的代理的消息与特定的TCP源端口一起发送,但它显然会在每次调用时分配一个随机端口。

问题是:我有两台主机A和B正在运行WCF服务(每台主机上相同),主机A的地址为AdA和端口PA,主机B的地址为AdB,端口为PB 。主机A向主机B发送消息。主机B在消息之后执行一些内部操作,然后向主机A发送消息。问题是当主机A在B上调用web方法时,它发送带有随机src的TCP消息端口,以及匹配A托管服务的端口的端口,因此不会在A上调用web方法,因为WCF分配的源端口与服务发布的端口不匹配。

到目前为止,我一直在使用BasicHttpBinding。

我怎样才能做到这一点?

感谢。

3 个答案:

答案 0 :(得分:0)

netPeerTcpBinding允许您指定出站端口号。

答案 1 :(得分:0)

  

问题是,当主机A在B上调用web方法时,它会发送一个   带有随机src端口的TCP消息,以及与之不匹配的TCP消息   A托管服务的端口,因此web方法不是   在A上调用,因为WCF分配的源端口不匹配   服务发布的端口。

没有理由因为它收到来自其他网络服务的回复而应该调用A的Web方法。您必须明确调用该服务。如果您希望在对A调用B的响应中调用A,则服务B中的代码必须进行该调用。虽然如果你有两种方法可以相互调用,那就只是来回,所以你需要一个退出条件。也许如果你提供了关于你想要完成什么的更多细节,我可以提供更多的建议。

答案 2 :(得分:-1)

我认为不可能为任何类型的网络通信分配源端口,因为它必须是唯一的。

  

源端口是TCP / IP分配给的下一个可用号码   客户。这个分配的号码是网络地址转换的方式   method确定将响应发送回的用户(请参阅NAT)。   虽然可以同时使用相同的客户编号   成千上万的组织,每个TCP / IP网络都跟踪自己的   分配的号码仅供该网络使用。的组合   端口号和IP地址称为“套接字”。

了解详情:http://www.answers.com/topic/port-number#ixzz1jLxPzCVe