0

我有一个用 C 语言创建的媒体播放器,它与我用 Python 编写的服务器一起运行。服务器接受命令来修改驻留在 SQLite 数据库中的播放列表。

一旦 python 代码更新了数据库(这发生在媒体播放器播放时的后台),它需要让播放器知道数据库中有一个新的播放列表,以便它可以开始播放新文件。

我打算在数据库中设置一个标志,玩家可以不断地轮询这个标志,但我认为这不是最好的方法。我能想到的所有选项都涉及媒体播放器不断检查某些内容。

解决这个问题的最佳方法是什么?

4

1 回答 1

5

有很多方法可以做到这一点:

  1. Signals - 从 Python 向播放器发送 SIGUSR1 信号。
  2. 套接字 - 播放器在某个端口上侦听,Python 在该端口上发送一些数据(在这种情况下,UDP 将是最简单的)。
  3. Fifo - mkfifoLinux 机器上有。以这种方式创建的文件类似于套接字。

我会推荐UDP套接字。它比信号简单、快速且更优雅。Python 代码大概只有 3 行代码。

示例 Python 代码:

sock = socket.socket()
sock.connect(('localhost', 9999))
sock.sendall('update')
sock.close()

示例 C UDP 服务器: http ://www.cs.ucsb.edu/~almeroth/classes/W01.176B/hw2/examples/udp-server.c

于 2012-06-11T16:02:26.177 回答