IP Messenger Protocolを解析中。
以下備忘録。
本家はVisual C++で実装。
IPMSG_DIALUPOPTの仕様
IPMSG_DIALUPOPTとは自身の状態を示すオプション it's self statusである。
ダイアルアップとは古きダイアルアップ接続のネット通信の事ではなく、「ブロードキャストを受信できないためcan't
receive broadcast 個別にコマンドを送ってほしい require unicast」という意味。
つまり、IPMSG_BR_ENTRY、IPMSG_BR_EXIT、IPMSG_BR_ABSENCE(=NOTIFY)などのBR系パケットをBroadcastではなくUDP
Unicastで送信してほしいというクライアントステータス。
AndroidのBroadcast受信能力
以下の理由により、Android端末ではneed to have
IPMSG_DIALUPOPTを立てる必要がある。
※注:筆者調べ。Googleにより仕様がアナウンスされているわけではないし、全てのAndroidバージョンで検証したわけでもない。
- 255.255.255.255を受信できない。can't receive.
- NICローカルアドレスを指定してUDPソケットを開くとブロードキャストを受信できない。If NIC-LocalIP is set to UDP-Socket when it is opened, can't receive broadcast.
- Sleep状態の時ブロードキャストを受信できない。If device is sleep, can't receive broadcast.
0 件のコメント:
コメントを投稿