3

我和发布这个主题的人有同样的困境,与 WCF 的实时通信, 除了我的问题与游戏编程无关。我想知道在两个 Windows 应用程序(服务器-客户端)之间进行实时通信的最佳方法是什么。迄今为止,我正在使用 Visual c++/c#,我希望能够将服务器接收到的所有 Feed 实时显示给客户端。

我已经开始尝试使用 .NET 远程处理,但在我的持续研究中,它似乎会使用 SOAP-http,并且可能会影响通信速度。我的服务器和客户端将使用 Internet 进行通信,而 .NET 远程处理在防火墙或 Internet 之间进行通信时不允许使用 TCP 通道。

您的意见将不胜感激。

4

2 回答 2

2

我想这取决于您的场景,如果您想要“实时”并且您愿意在此过程中丢失一些包,那么您最好使用 UDP,例如,在您恢复慢包时使用视频会议工具将不得不移动并显示视频或音频中的下一帧;这是使用 UDP 的一个很好的例子。这就是 UDP 比 TCP 快得多的原因。

但是,如果您不愿意丢失任何消息,那么 TCP 就是为您创建的,因为如果您丢失了一个包,该协议将再次请求它以使您的完整消息尽可能完整。

此外,这取决于持续沟通的方式,信息是从一到多流动吗?从多到多?从一到音调?

以 NetNamedPipeBinding 为例,这将是一个更快的过程,但只部署在单个机器上,但跨进程。而 NetMsmqBinding 将帮助您构建队列,并且对于您的负载将是大量连接的场景,它将具有惊人的可靠性和可扩展性。

最后,这一切都归结为您的具体场景和您的业务目标。

希望能帮助到你

于 2012-11-16T09:18:30.963 回答
0

如果您愿意自己进行消息解析,可以使用标准 TCP 套接字与 TcpClient 和 TcpListener 类。如果您的数据已经是可序列化的对象,您可以将其序列化为文本流,然后通过套接字发送,在客户端反序列化。

为了让它在互联网上工作,服务器需要在你的路由器上转发端口,客户端只需附加到服务器的公共 IP。您显然还需要在防火墙中为此端口添加一个例外。

WCF 和大数据的最大问题是设置流式传输,默认情况下 WCF 一次发送所有内容,这对于大文件不实用。

于 2013-08-02T16:27:36.277 回答