【问题标题】:How to maintain a persistant network-connection between two applications over a network?如何通过网络维护两个应用程序之间的持久网络连接?
【发布时间】:2026-02-15 05:10:02
【问题描述】:

我的管理层最近找到了一个有趣的问题 - 我很确定我正在告诉我的老板正确的信息,但我真的想确保我告诉他们正确的信息。

我被要求开发一些具有此功能的软件:

  • 一个位置的应用程序每秒不断地处理实时数据,并且只有在基础数据发生任何变化时才会生成数据。
  • 如果数据发生更改,则通过网络将结果发送到另一个盒子
  • 保持两台机器之间的持久连接,如果由于某种原因网络连接中断,则更改远程框

据我了解,我想我需要阅读一些关于做某种 TCP/IP 套接字级别的东西的资料。这样,如果连接断开,远程位置就会知道它收到的数据可能是陈旧的。

然而,管理层似乎非常相信这可以使用 SOAP 来完成。我的印象是 SOAP 或多或少是客户端从服务器启动过程并通过 HTTP 协议获得一些结果的一种方式。我假设这个错了吗?我还没有找到很多关于 SOAP 如何解决此类问题的信息。

我觉得我办公室周围的很多人都在使用 SOAP 作为一个流行词,这让我对 SOAP 的实际含义和能力产生了一些困惑。

任何关于如何完成此任务的想法将不胜感激!

【问题讨论】:

    标签: sockets soap network-programming network-protocols


    【解决方案1】:

    我认为 SOAP 是错误的工具。 SOAP 是用于交换结构化数据的规范。对于您的问题,最简单的方法是编写一个程序来传输数据并确定另一端是否还活着。套接字是一个很好的方法。网上有很多socket编程教程。选择您的语言,然后询问 Google 先生。编写几个演示程序来教自己它是如何工作的。询问您是否有更具体的问题。

    对于这个问题,您需要一个发送者和一个接收者。发送者在收到数据时发送数据,接收者等待数据并在数据到达时将其交给。先让它工作。接下来,添加心跳;定期发送一条消息,上面写着“我还活着”。接下来让它工作。你需要确定你想要的确切行为——如果双方都向另一端发送心跳,你愿意等待心跳的最长时间,以及如果心跳停止到达,你会采取什么行动。网络连接可能会掉线,另一端可能会崩溃,另一端可能会挂起,也许还有其他情况您应该考虑(例如,如果实时数据是无意义的怎么办?)。弄清楚如何处理每个条件,并编写错误处理代码。对其进行测试,并提供一份文档。

    【讨论】:

      【解决方案2】:

      SOAP 肯定不会告诉您数据源何时出现故障,尽管您可以使用“心跳”来添加它。

      您可能是对的,他们只是在重复一个流行词,实际上并不太了解 SOAP 是什么或做什么,或者对于为什么应该在这里使用它有任何真正的论据。

      【讨论】:

        最近更新 更多