2010-06-17 98 views
0

我已经写了一个小流媒体MP3服务器在Python中。到目前为止,它所做的只是接受一个ServerSocket连接,并使用socket.send()开始将其队列中的所有mp3数据传输到请求。我已经实现了这个功能,以便在流媒体元数据中进行区块化处理,因此播放歌曲的名称会显示在客户端中。蟒蛇流RPC服务器与RPC

我想将播放列表管理添加到服务器,以便我可以操纵正在运行的服务器的播放列表。我有一个模糊的想法的xmlrpclib将是适合于这样做,但我感到困惑的两件事情:

  1. 是否有可能/最好ICY和XMLRPC整合在一台服务器和一个端口上。

  2. 如何在流式线程和播放列表之间共享状态,并通过xmlrpc对其进行操作。

回答

0

如果您使用两个单独的端口,每个端口都有自己的服务器运行在单独的线程中,您的初始尝试可能会更容易。然而,从长远来看,管理线程之间的同步可能是一件烦人的事情。

ICY和HTTP非常相似,如果您已经在SocketServer上实现了ICY,则可能需要扩展BaseHTTPServer.BaseHTTPRequestHandler以响应同一端口上的ICY和HTTP请求。查看BaseHTTPRequestHandler.parse_request()方法的标准库代码,并考虑如何在分裂人格的子类中重写它。

此外,当您想要使用这些类处理多个并发请求时,请看SocketServer mixin classes

+0

BaseHTTPRequestHandler会收到xmlrpc吗?我知道HTTP可以用于所有这些,但我的问题是为了在同一台服务器上使用两种不同的协议。是的,我需要同步。是的,我正在使用线程mixin – g33kz0r 2010-06-17 14:39:24

+0

是的,我了解您在同一台服务器上使用两种协议的目标。正如我所说,这将需要一些工作。请注意,SimpleXMLRPCServer基于与BaseHTTPServer相同的类层次结构。我的建议是阅读两者的代码,了解共享的部分和差异,并提出自己的将所需功能绑定在一起的子类。 – 2010-06-17 16:44:55

+0

我已经实现了BaseHTTPServer来处理ICY和XML RPC。感谢您的指点。 任何指针如何实现这个野兽的共享状态? – g33kz0r 2010-06-21 21:27:58