2011-06-19 53 views
0

我正在开发一个云计算环境的测试平台。我想建立多个客户端连接到服务器。我想要的是,服务器首先将数据发送到指定sending_interval的所有客户端,然后所有客户端将继续以time_interval(由服务器指定)的时间间隔发送其数据。请帮助我,我怎样才能使用python socket程序来做同样的事情。 (即我想让多个客户端连接到单个服务器,并且客户端还要通过服务器指定的时间间隔发送数据)。如果任何人都可以帮助我,那将会很棒。提前致谢。Python套接字编程

+2

建议您使用现有框架(如gevent或twisted)来帮助完成此任务。我不完全确定你需要做什么。 – Pwnna

+0

我只是希望服务器只向所有客户端发送一个信息(即采样时间)。然后,所有的客户端将继续在服务器数据中规定的时间间隔内(即采样时间)将数据连续发送回服务器。 –

+1

...那么问题是什么? – Pwnna

回答

0

这个问题是很容易通过ZeroMQ套接字库解决。它是生产稳定的。它允许您定义发布者 - 订阅者关系,发布过程将在端口上发布数据,而不管有多少(0到无限)侦听进程。他们称之为PUB-SUB模型;它在他们的文档中(下面的链接)。

这听起来像你想建立一群客户,这是所有的出版商。他们可以订阅一个控制通道,该控制通道会将更新发送到其配置(多久写一次)。他们还充当发布者,按照默认/配置通道/套接字指定的时间间隔推出自己的数据。

然后,您有一个或多个侦听进程来侦听所有客户端发布的消息。也许你甚至可以有两个侦听过程,一个用于备份或DR,或者其他任何。

我们正在使用ZeroMQ并且很喜欢它的简单性;没有连接错误,因为发布者不关心是否有人在倾听,订阅者可以在发布者之前开始工作,并且如果没有什么可以听的话,它可以循环并等待,直到出现为止。

绑定以所有语言提供(很怪异)。 Python的绑定不是纯粹的python,它需要一个C编译器,但速度非常快,pub/sub示例是一个剪切/粘贴,'golly,它的工作原理!经验。

链接:http://zeromq.org

有许多其他的方法与此库,包括消息队列等,他们有比较完整的文档了。