我想使用WCF启用双向通信,而无需在客户端上打开端口。
我正在开发类似于P2P应用程序(类似于teamviewer / logmein)的东西,您不需要打开端口进行通信。
如何通过HTTP / HTTPS完成双向通信,而无需在客户端中打开端口?
注意:可以在服务器中打开端口80 ......没有问题。
由于
答案 0 :(得分:5)
你提到的那些系统如下工作。他们首先尝试使客户端A和客户端B直接通过一系列不同的拓扑进行通信,这些拓扑基本上要求其中一个允许传入连接,如果失败,则它们会回退到作为中间人的第三方。因此,客户端A与服务器通信并向客户端B发送消息。然后,客户端A将响应时发回给它的消息。客户端B将消息发送到服务器,它从服务器返回来自客户端A的消息。这样,客户端A和B都始终启动连接,并且不需要为传入流量打开端口。
如果我在你的情况下理解正确,你总是希望男人在中间。为此,您必须编写一个提供所有相关方法的WCF服务。例如
之类的东西然后让这些方法分别从某个地方(如数据库或队列或其他东西)存储和检索那些Message对象。
然后使用HTTP绑定编写连接到WCF服务的客户端,并调用服务器上的方法并处理结果。
我希望你理解
伪(代码)示例
在这个例子中,我假设消息对象只不过是一个字符串,唯一的命令是“whattimeisit”,响应是字符串形式的本地时间
答案 1 :(得分:1)
我不确定我理解。数字防火墙的目的是(通常)控制通信信道。如果您想绕过防火墙进行通信,您有两种选择。
在前面的情况下:
您可以将邮件传递给传递它们的代理(电子邮件是一个很好但不完全响应的示例)。
对于后者:
您可以将消息放在说文件中,其他传输层承载它们