vlcメディアプレーヤーの制御コマンドを中継するには、socat / netcatを使用してUDP-TCPブリッジを作成します。

vlcメディアプレーヤーの制御コマンドを中継するには、socat / netcatを使用してUDP-TCPブリッジを作成します。

UDP - ポートでリッスンする必要があります。 TCP - サーバーに接続する必要があります。

私は努力netcatしましたsocat

nc -v -u -l -p 3333 | nc -v 127.0.0.1 50000

socat -v UDP-LISTEN:3333,fork TCP:localhost:50000

どちらも機能します。メッセージを転送しますが、まだ終わっていません。 VLCはnetcat / socatを閉じた場合にのみコマンドを受け入れます。

接続を監視しましたが、sockettestメッセージは次の行に順番に表示されました。

playpausestopexitadd

送信されたメッセージが次のように行を終了する必要があります。

play
stop
exit
add

たぶんパケットはまだ終わっていませんか?

特定の時間以降にパケット/終了ラインを送信するオプションがあるかどうかをnc知りたいです。socat

\n@roaimaが提案したように出力に追加すると、1行play\nstop\nplay\nが表示されます。

ベストアンサー1

"play\n"私はあなたの問題がコマンドに改行文字を追加せずにUDPパケットを送信することだと思います(代わりに送信する必要があるため"play")。

とにかく、すべてのUDPパケットに対して新しいTCP接続を作成するには、次のudp-recvfrom代わりにudp-listen次のものを使用する必要がありますsocat

socat -u udp-recvfrom:3333,fork tcp:localhost:50000

その後、各UDPパケットはパケットの内容を送信するためにのみ使用されるTCP接続をトリガしてから閉じる必要があります。

以下を実行してテストします。

echo play | socat -u - udp-sendto:localhost:3333

(ペイロードが5バイトのUDPパケットを送信します"play\n"。)

おすすめ記事