Socket Multicast 通信攻略

Socket Multicast 通信攻略

@IT Monoistの記事、http://monoist.atmarkit.co.jp/mn/articles/1111/08/news002.html でも紹介した、SocketによるMulticast通信、実は私かなり嵌ってます。

Wi-Fi LANなどで、アドホックに接続されたデバイスノードに、とりあえずデータを送りつけてデータをシェアしたい、こういう状況は実は結構あるのではないかと思っています。Socketによるコネクションレスの通信UDPを使い、IGMP(Internet Group Management Protocol)という名前のプロトコルを使った通信を使うと、軽い情報を飛ばしあってデータを共有しあう通信を実現することができます。IGMPの詳細に興味のある方は、http://technet.microsoft.com/ja-jp/library/cc787925(WS.10).aspx を参照してください。IGMPは最近のWi-Fiルーターだったらほとんどサポートしているようで、LANに、Wi-Fi接続できるデバイスであれば活用が可能です。

IGMPを使うには、以下の手順を踏みます。

  1. UDPでSocket接続
  2. グループ通信用に予め決められた、IPアドレス、ポートでグループにJoin
  3. Socketへのデータ送信→グループにJoinしているデバイスノードにデータが送信され受信

手順も凄くシンプル。私はセキュリティの専門家ではないので、断言は出来ませんが、

  • 通信がLANで閉じている
  • グループにJoinしなければデータの送受信は出来ない
  • 送信する相手そのものを明示的には指定できない

という特徴を持っているので、手軽で軽くシンプルで比較的安全な通信方法といえるのではないかと(まちがっていたらごめんなさい)思っています。

例えば、環境センサー付デバイスがネットワークに接続され、環境データを定期的に観測して、ネットにマルチキャストする、送られたデータは、それを使いたいデバイスがグループにJoinして、受信し、それぞれのアプリケーション、サービスで活用、とか、ソーシャルネットのより閉じたミニコミュニティ通信で活用する、とか、クイズへの早押し通知や、何かの投票状況集め、店舗内での特売情報受信とか、まぁ色々と応用が考えられるかなと。

.NET Frameworkでは、この通信を使う為のクラスが用意されていて、それを使えば、比較的簡単にGroup Multicast通信を取り込むことが出来ます。残念ながら、Full .NET、Windows Phone 7向け、.NET Micro Frameworkで全く同じクラスは用意されていません。各フレームワークについては、以下のような感じでクラスが用意されています。

フレームワーククラス名備考
Full .NETSocket、または、UdpClientDesktopなど
SivlerlightUdpAnySourceMulticastClientWindows Phone、RIA、DesktopのOOBアプリ
.NET Micro FrameworkSocketちょっと面倒

表のように、同じクラスではないですが、それぞれ使えるクラスを使ってUDP Multicastグループ通信を実装することが可能です。

それぞれの場合の使い方は、今後のブログポストで。

转载于:https://www.cnblogs.com/iphone6/archive/2011/11/16/2250739.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值