【发布时间】:2013-11-23 15:58:35
【问题描述】:
我正在研究做一个双向通信应用程序,不一定是点对点。看着使用 wcf,我很好奇这一切的内部运作。对我来说,一个大问题是 NAT / 防火墙。
我需要在客户端不进行端口转发的情况下完成这项工作。我将端口转发服务器,那很好。但是客户端需要能够连接到服务器,然后通过这个现在打开的(NAT 和防火墙)连接来回通信。
我正在编写的双工wcf示例,似乎都是使用向服务器宣布的客户端地址用于回调。假设这是一个本地局域网地址,不适用于公共连接。如果是公网地址,需要端口转发吗?
我错过了什么吗?我想建立连接,保持打开状态,并以双工方式使用它。因此,一旦客户端“拨出”,就可以通过 NAT 和防火墙限制。
此外,我不太确定 NAT 是如何实现的。如果我在端口 5555 上“打出”与 wcf 服务的连接,并收到回复,那么来自/到该 wcf 服务地址的端口 5555 是否保留在 NAT 表中?如果我要从服务器 wcf 服务发出进一步的连接,并“连接”到客户端上运行的 wcf 服务(连接到客户端公共 ip),NAT 表是否会知道它,并将流量转发到最初打孔的客户?
我的最终实现是:
远程客户端 端口转发后的服务器 管理应用程序向服务器发出命令,服务器将它们中继到远程客户端。
我是否在尝试使用 wcf 时发现错误的树?前段时间我开始使用 raw tcp 进行这项工作,但现在又开始着手这个项目,我想走 wcf 路线来解决滚动我自己的 raw tcp 通信的所有开销。
感谢您提供的任何见解。
编辑:[PING-PONG] 你好字?
【问题讨论】:
标签: c# .net vb.net wcf client-server