2014-06-24 76 views
0

我有一个python程序,它读取ADC中的值,然后将它们写入文件,并在TCP连接可用时通过TCP发送它们。我可以很好地发送数据,但随着数据不断被读取,我希望能够保持连接打开。我如何让客户端检查服务器是否有更多数据要发送,从而保持连接打开?维护TCP连接

+0

为什么你不能只发送向服务器发送一个命令(以字符串形式),该命令将导致响应是否有要发送的数据? –

+0

尝试发送每秒保持活动(一些任意数据) –

回答

0

这种情况看起来与我们的应用程序非常相似。我们为此使用ZeroMQ。

使用ZeromMQ与PUB/SUB

PyZMQ doc是例如用于使用发布/订阅。

数据提供者创建PUB套接字并向其发送消息。

数据使用者设置SUB套接字并从中读取消息。

通常情况下,PUB套接字是固定的基础设施的一部分,所以它绑定到某个端口,并连接SUB。但如果你喜欢,你可以切换它,它也可以。

优点是:

  • 提供商将消息发送到PUB套接字,并不会阻止的,如果没有消费者或连接,PUB插座会丢弃该消息时
  • 重新连接被自动
  • 处理。
  • 代码来实现,这是很短的

其他消息传递模式与ZeroMQ

的Pub/Sub只是一种选择,有喜欢的推/拉,REQ/REP等

其他组合

我有一些服务运行多年PUSH/PULL,并保持“相当好”(通常有6个星期才需要重新启动,但这是由于硬件上的问题比在ZeroMQ库中。 )