0

私は C で作成したメディア プレーヤーを持っており、Python のサーバーと一緒に実行しています。サーバーは、SQLite データベースにある再生リストを変更するコマンドを受け入れます。

Python コードが DB を更新したら (これは、メディア プレーヤーの再生中にバックグラウンドで発生します)、プレーヤーに新しいプレイリストが DB にあることを知らせて、新しいファイルの再生を開始できるようにする必要があります。

DB にフラグを設定するつもりでした。プレーヤーは常にこのフラグをポーリングできますが、これが最善の方法だとは思いません。私が考えることができるすべてのオプションには、メディアプレーヤーが常に何かをチェックすることが含まれます。

これについて最善の方法は何ですか?

4

1 に答える 1

5

それを行うには多くの方法があります。

  1. シグナル - 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 に答える