我正在使用C ++为专业用户编写桌面应用程序。我当前的设计依赖于第三方C ++组件,该组件的API基于TCP / IP。要集成此组件,可能需要对其进行修改,以用常规的C ++ API替换网络代码。

如果我可以不修改组件并按预期方式通过网络与之通信,将会容易得多。为此,我需要将组件作为服务器运行,在某些高端口上侦听回送连接。

我对这种环回方法有两个担忧。谁能缓解或证实我的恐惧?

可靠性和性能
环回连接可能会失败,被防病毒软件阻止或拦截。像这样:Loopback connections working in user's context but not working from Local System account

安全
我不太担心有人会嗅探我的回送数据包,但我不希望我的服务器本身成为安全隐患。在某个较高的端口上侦听进程是否有风险?

是否有许多桌面应用程序这样运行?

我最初是在Windows上进行开发的,但将来可能会迁移到Mac和Linux,因此此问题适用于所有常见的台式机操作系统。

最佳答案

可靠性:如果组件本身是可靠的,那么侦听环回接口就没有问题。如果组件不可靠,那么最好通过环回接口与之对话,而不是直接调用其功能。您可以轻松地处理断开连接并重新启动组件以继续工作,但是如果您链接到该组件,则该组件也会失败-您的应用程序也会失败。

性能:有一些性能损失。以目前的CPU能力来说,还算不上大。对于大多数应用程序,它应该是可以接受的。

安全性:组件应绑定到本地主机地址,以避免安全问题。但是具有足够访问级别的本地3-d第三方软件(病毒)软件可以拦截甚至修改通信流。与其他任何通信方式相同。

广泛使用环回连接(java使用它进行内部通信,命名使用它进行主服务控制,等等)

09-11 19:35