如何通过网络维护两个应用程序之间的持久网络连接?

时间:2010-04-23 21:05:01

标签: sockets soap network-programming network-protocols

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

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

  • 一个位置的应用程序每秒都在不断处理实时数据,只有在底层数据以任何方式发生变化时才会生成数据。
  • 如果数据已更改,请将结果通过网络发送到另一个方框
  • 维护两台计算机之间的持久连接,如果由于某种原因导致网络连接中断,则更改远程计算机

据我所知,我想我需要做一些关于做某种TCP / IP套接字级别的东西的阅读。这样,如果连接被丢弃,远程位置将意识到它收到的数据可能是陈旧的。

然而,管理层似乎非常确信这可以使用SOAP来实现。我的印象是,SOAP或多或少是客户端从服务器启动过程并通过HTTP协议获得一些结果的一种方式。假设这个我错了吗?我无法找到有关SOAP如何能够解决这样的问题的大量信息。

我觉得我办公室周围的很多人都使用SOAP作为流行语,这对SOAP实际上是什么产生了一些混淆 - 并且能够。

对于如何完成这项任务的任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

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

相关问题