ポート2088でブロードキャストされているUDPパケットを受信し、データを読み取り、URLにPOSTするスクリプトを作成しようとしています。特に、呼び出し時にLIFXインジケーターが赤色に変わるように努めています。電話機の状態が変わるたびに(オフフック、オンフック、着信音など)UDP 2088でステータスをブロードキャストします。
したがって、擬似コードは次のようになります。
Start Loop
Listen for UDP 2088 from source [my phone]
If data = [x] then send command to turn on lamp
else if data = [y] send command to turn off lamp
最大の問題は、実際にパケットからデータを取得する方法がわからないことです。 Wiresharkでは読み込むことができますが、netcatなどを実行すると読み取れない出力が表示されます。
$ netcat -u -l 2088 -vvは
0.0.0.0にバインドされています2088は
192.168.250.51
^ C5から接続2088を受信しました
ありがとうございます!
答え1
UDPパケットの後で終了する唯一の方法は、netcat
忙しいループとタイムアウトを使用することです。
while :
do
data=$(nc -u -l -p 2088 -w 1 </dev/null 2>/dev/null)
[ -n "$data" ] && printf "%s\n" "$(printf "%s" "$data" | hex)"
done
このタイプのコードでかゆみを傷つけます。
echo hello | nc -q 1 -w 1 -u "$listeningHost" 2088
少なくとも2つのバージョンがnetcat
利用可能です。この例は間違いなく動作します伝統的な;まだテストしていませんオープンBSD。単一ホストでテストしないでください。これには実際には2つの接続されたホストが必要です。