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