C# 通过外部管理的TCP套接字使用WCF

C# 通过外部管理的TCP套接字使用WCF,c#,wcf,C#,Wcf,今天,我们使用WCF的NetTcpBinding在系统中的对等方之间进行通信。通信是双向的:每个对等点都有针对其他对等点打开的通道 我们现在正在研究扩展我们的架构,并引入两种“类型”的对等点:“公共”对等点可以通过公共互联网访问,而“内部”对等点支持NAT。这样做的影响是,内部对等方可以建立到公共对等方的TCP连接,但反过来是不可能的。因此,公共对等点不能再与内部对等点建立连接 由于TCP连接是对称的(一旦建立),我的计划是让内部对等机针对公共对等机建立所有必需的TCP套接字,然后让公共对等机使

今天,我们使用WCF的
NetTcpBinding
在系统中的对等方之间进行通信。通信是双向的:每个对等点都有针对其他对等点打开的通道

我们现在正在研究扩展我们的架构,并引入两种“类型”的对等点:“公共”对等点可以通过公共互联网访问,而“内部”对等点支持NAT。这样做的影响是,内部对等方可以建立到公共对等方的TCP连接,但反过来是不可能的。因此,公共对等点不能再与内部对等点建立连接

由于TCP连接是对称的(一旦建立),我的计划是让内部对等机针对公共对等机建立所有必需的TCP套接字,然后让公共对等机使用其中一些套接字建立到内部对等机的通道。但是,当使用NetTcpBinding时,WCF为我管理TCP套接字


我是否必须编写新的传输来实现此行为,或者是否有其他方法?

尝试查看SSH转发。

您也可以通过防火墙转发适当的端口,以使传入的外部连接能够到达您的内部网络。您无法保证外部对等方不支持NAT,因此从您这边启动连接将遇到相同的问题-这可以通过再次通过防火墙转发端口来解决,但现在是在客户端。对于每个客户端。@CodeCaster您认为我可以在NAT中使用端口转发是正确的,但它需要在“内部”端进行更多配置。这两种类型的对等点由两种不同类型的客户使用:对于“内部”类型,我更喜欢要求尽可能少的配置更改。这很有趣,但它说“此特定方法仅适用于传出TCP连接”-我还需要允许传入连接(到所谓的“内部”对等点),正如我在前面的评论中提到的,客户使用“内部”对等点,而我更喜欢尽可能少地进行设置。具体来说,我希望避免打开防火墙/NAT端口。