WCF双向HTTP通信绕过防火墙
我想使用WCF在不打开客户端端口的情况下启用双向通信 我正在开发类似于P2P应用程序(类似于teamviewer/logmein)的东西,您不需要打开端口进行通信 如何通过HTTP/HTTPS实现双向通信,而无需在客户端打开端口 注意:端口80可以在服务器中打开…没有问题WCF双向HTTP通信绕过防火墙,wcf,firewall,duplex,Wcf,Firewall,Duplex,我想使用WCF在不打开客户端端口的情况下启用双向通信 我正在开发类似于P2P应用程序(类似于teamviewer/logmein)的东西,您不需要打开端口进行通信 如何通过HTTP/HTTPS实现双向通信,而无需在客户端打开端口 注意:端口80可以在服务器中打开…没有问题 谢谢我不太明白。数字防火墙的目的(通常)是控制通信信道。如果您想绕过防火墙进行通信,有两种选择 将消息隐藏在防火墙允许的内容中 使用防火墙无法控制的通信通道 在较早的情况下: 您可以将消息传递给传递消息的代理(电子邮件是一个很
谢谢我不太明白。数字防火墙的目的(通常)是控制通信信道。如果您想绕过防火墙进行通信,有两种选择
您可以将消息放在某个其他传输层承载它们的文件中,您提到的系统工作如下。他们首先试图让客户端A和客户端B通过一系列不同的拓扑直接通信,这些拓扑基本上要求其中一个允许进入的连接,如果失败的话,它们会退回到充当中间人的第三方。因此,客户机A与服务器对话,并为客户机B发送消息。然后,客户机A获得发往服务器的消息作为响应。客户端B将其消息发送到服务器,它从服务器从客户端A获取消息。这样,客户端A和B都会启动连接,而不需要为传入流量打开端口 如果我对你的情况理解正确,你总是希望那个人在中间。为了做到这一点,您必须编写一个提供所有相关方法的WCF服务。比如说
- void SendMessageToClient(Guid senderId、Guid recipientId、Message msg)
- 消息[]GetMessages(Guid recipientId)
- a)这不是一种非常有效的沟通方式李>
- b)测试、调试和理解正在发生的事情是很困难的,因为涉及的各方太多,而且通信是异步的,存在于3个不同的进程中李>
- c)它在通信上增加了一个额外的层,因此当您处理基础设施位以及处理实际协议时,您需要在头脑中清楚地知道(最好是在代码中)
- ClientA调用server.SendMessageToClient(“ClientA”、“clientB”、“whattimeisit”)李>
- 服务器将此消息存储在ID为1的数据库中
- ClientB调用服务器GetMessages(“ClientB”)李>
- 服务器检索ID为1的邮件
- 客户B收到“Whattimeiit”作为回应
- ClientB调用server.SendMessageToClient(“ClientB”、“clientA”、“19:50:12”)李>
- 服务器将此消息存储在ID为2的数据库中
- ClientA调用服务器GetMessages(“ClientA”)李>
- 服务器检索ID为2的邮件
- ClientA收到回复“19:50:12”