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
に、一定時間後にパケット/エンドラインを送信するオプションがあるかどうか疑問に思っています。
@roaimaの提案に従って\n
を出力に追加すると、play\nstop\nplay\n
が1行で表示されます。
UDPパケットを送信するものはコマンドに改行文字を追加していないため("play\n"
だけでなく"play"
を送信する必要がある場合など)、問題はさらに大きいと思います。
いずれの場合も、UDPパケットごとに新しいTCP接続を作成する場合は、socat
でudp-recvfrom
ではなくudp-listen
を使用する必要があります。
socat -u udp-recvfrom:3333,fork tcp:localhost:50000
次に、すべてのUDPパケットが1つのTCP接続をトリガーする必要があります。これは、パケットのコンテンツを送信するためだけに起動され、閉じられます。
次のようにしてテストします。
echo play | socat -u - udp-sendto:localhost:3333
(ペイロードに5バイトの"play\n"
が含まれるUDPパケットを送信します)。