Python流式TCP服务器与RPC

0 投票
1 回答
1657 浏览
提问于 2025-04-16 00:05

我用Python写了一个简单的MP3流媒体服务器。目前,它的功能就是接受一个ServerSocket连接,然后开始通过socket.send()把队列里的所有MP3数据流给请求的客户端。我还实现了流媒体的ICY元数据,这样客户端就能看到正在播放的歌曲名称。

我想给这个服务器添加播放列表管理功能,这样我就可以对正在运行的服务器的播放列表进行操作。我大概知道xmlrpclib可能适合这个功能,但我对两个问题有点困惑:

  1. 在同一个服务器和同一个端口上,是否可以/是否建议将ICY和XMLRPC结合在一起。

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

1 个回答

0

如果你一开始用两个不同的端口,每个端口上各自运行一个服务器,可能会简单一些。不过,长时间管理这两个线程之间的同步会变得很麻烦。

ICY和HTTP非常相似,如果你已经在SocketServer上实现了ICY,那么你可以考虑扩展一下BaseHTTPServer.BaseHTTPRequestHandler,让它能在同一个端口上同时响应ICY和HTTP请求。你可以看看标准库中BaseHTTPRequestHandler.parse_request()这个方法的代码,想想怎么在子类中重写它,以便让它有双重身份。

另外,当你想用这些类处理多个同时的请求时,可以看看SocketServer的混合类

撰写回答