我有一個與this question非常相似的問題,但所提供的解決方案對我而言並不適用。實際上我想做一些與衆不同的事情,所以也許有更好的辦法。處理UDP數據包並同時轉發它們
我希望將UDP單播數據包(視頻流)發送到服務器。服務器會將這些數據包轉發到另一臺計算機。或者,登錄服務器的用戶可以使用類似mplayer的方式觀看視頻流。我非常肯定我可以將視頻流傳輸到服務器和視頻源的最終目的地,但我真的希望服務器能夠控制它。
第一次嘗試: 下載nmap以獲取ncat工具。以爲我可以使用它來下載和管道字節mplayer和轉發與另一個ncat進程。我可以管到mplayer,它運作的很好,我不能同時轉發。如果我使用的是Linux,顯然我可以使用Tee和流程替換,但我正在尋找Windows解決方案。
第二次嘗試 我發現一種解決方案,這種類型的隱含管道到多個程序將可能在PowerShell中。但是我發現二元管道不起作用。
第三次嘗試 我試圖編程一個tee-like可執行文件,它將發球到兩個程序。這跟我一樣近,但視頻流看起來有點損壞。我認爲這比其他任何問題都更重要。
第四次嘗試 現在我正處在發現socat的地步,這引起了我的聯繫。這似乎很奇怪,但我認爲解決方案將是我的服務器將數據包轉發到目的地,並將數據包轉發到服務器上的其他端口,該端口將與netcat或socat一起用於管道到mplayer。我寧願不使用服務器上的另一個端口,但如果這就是我必須做的,那麼確定。但正如我所說,來自另一個問題的解決方案似乎並不奏效。 Mplayer開始緩衝,然後很快停下來。
按順序在一個單獨的cmd窗口中分別對其進行運算。注意我沒有嘗試轉發到目標計算機,只是試圖讓mplayer在服務器上工作。
socat UDP4-LISTEN:5000 UDP-DATAGRAM:224.10.10.10:5001
socat UDP4-recvfrom的:5001,IP-附加成員= 224.10.10.10:0.0.0.0,reuseaddr,叉UDP -DATAGRAM:192.168.16.33:5002
ncat -l -u -p 5002 | mplayer -vo direct3d -cache 1024 -
根據MPlayer的輸出,我似乎得到大約924個字節。
雖然我會繼續學習socat,但我很新鮮。我認爲我沒有正確運行socat,但我不確定問題出在哪裏。如果任何人都可以指出我的錯誤或提供替代解決方案,我會非常感激。謝謝。
編輯:
我做了一些更多的測試,如果我改變第二socat做到這一點:
socat UDP4-recvfrom的:5001,IP-附加會員= 224.10.10.10 :0.0.0.0,reuseaddr,fork - | mplayer -vo direct3d -cache 1024 -
我發現它會播放來自多播地址的流。但顯然轉發到端口5002上的單播地址是不起作用的。