Tcp

使用 socat/netcat 創建 UDP 到 TCP 橋以中繼 vlc 媒體播放器的控制命令

  • May 19, 2017

UDP - 必須監聽埠。TCP - 必須連接到伺服器。

我試過netcatsocat

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

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

兩者都有效——他們傳遞了資訊——但這條線並沒有結束。如果我關閉 netcat/socat,VLC 只會接受命令。

我監視了與的連接,sockettest並且消息在同一行中一個接一個,如下所示:

playpausestopexitadd

我需要結束該行,以便傳輸的消息如下所示:

play
stop
exit
add

也許數據包沒有結束?

我想知道是否ncsocat可以選擇在一定時間後發送數據包/結束行。

如果我\n按照@roaima 的建議添加到輸出中,我會play\nstop\nplay\n進入一行。

我懷疑您的問題更多是因為發送 UDP 數據包的任何內容都不會在命令中添加換行符(因為它們應該發送"play\n"而不僅僅是"play")。

在任何情況下,如果您希望為每個 UDP 數據包創建一個新的 TCP 連接,您應該使用udp-recvfrom而不是udp-listenin socat

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

然後每個 UDP 數據包應該觸發一個 TCP 連接,該連接僅用於發送數據包的內容,然後關閉。

通過執行測試:

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

(它發送一個 UDP 數據包,其有效負載包含 5 個字節"play\n")。

引用自:https://unix.stackexchange.com/questions/267118