發送UDP資料包並監聽回复

發送UDP資料包並監聽回复

我有一個程序向連接埠發送 UDP 封包xyz,我將回覆一些 UDP 封包!介面.

我發現我可以發送 UDP 資料包

echo <packetContent> | socat - udp:<dstIP>:<dstPort>,sp=<srcPort>

並監聽(=只是將其內容轉儲到標準輸出)UDP 封包

socat - udp-listen:<srcPortFromPreviousLine>

但我怎麼才能把這兩者結合在一起呢?當我首先在一個視窗中啟動監聽部分時,該連接埠已被使用,我無法在另一個視窗中從那裡發送任何內容。

答案1

就像評論中所說的重力一樣,udp:是雙向的。所以我只能使用一個指令:

echo <packetContent> | socat -t 10 - udp:<dstIp>:<dstPort>,sp:<srcPort>

這會發送資料包並列印從那裡返回的所有資料包;如果沒有到達,則 10 秒後退出 ( -t 10)。

答案2

如果支持,請reuseaddr與這兩個命令一起使用。他們會像

echo <packetContent> | socat - udp:<dstIP>:<dstPort>,sp=<srcPort>,reuseaddr
socat - udp-listen:<srcPortFromPreviousLine>,reuseaddr

man 1 socat

reuseaddr
允許其他套接字綁定到某個位址,即使該位址的一部分(例如本機連接埠)已被 所使用socat

相關內容