维护TCP连接

时间:2014-06-24 13:57:18

标签: python tcp

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

1 个答案:

答案 0 :(得分:0)

此方案似乎与我们的某个应用程序非常相似。我们使用ZeroMQ。

将ZeromMQ与PUB / SUB

一起使用

On PyZMQ doc是使用Pub / Sub。

的示例

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

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

通常,PUB套接字是基础设施的固定部分,因此它绑定到某个端口,并且SUB连接。但如果你愿意,你可以切换它,它也可以。

优点是:

  • 提供程序向PUB套接字发送消息但不阻止它
  • 自动处理重新连接
  • 如果没有消费者或连接,PUB套接字会以静默方式丢弃消息。
  • 实现此目的的代码很短

使用ZeroMQ的其他消息传递模式

PUB / SUB只是一个选项,还有其他组合,如PUSH / PULL,REQ / REP等。

我有一些服务在PUSH / PULL运行多年并保持“非常好”(通常需要6周时间才能重新启动,但这主要是由于硬件问题而不是ZeroMQ库。)