LoginSignup
0
0

More than 5 years have passed since last update.

AllJoynに付属しているサンプルbasicを試してみる。

Last updated at Posted at 2015-10-16

試したサンプルはこちら。
https://allseenalliance.org/developers/develop/run-sample-apps/basic

実行環境

  • VirtualBox上のUbuntu 14.04で試してみた。
  • AllJoynのバージョンは、v14.12。

basicは何をやるサンプルか?

ローカルのネットワーク越しに以下のようなことをしてくれる。

  • basic_clientが、basic_serviceに対して2つの単語HelloWorldを渡す。
  • basic_serviceは、それらの単語を連結した文字列Hello Worldを、basic_clientに返してくれる。

ビルド

ここに従ってビルドした。
ビルドすると、以下の場所にバイナリが生成される。今回使うのは (*) のプログラム。

build/linux/x86/debug/dist/cpp/bin/samples/
├── AboutClient
├── AboutClient_legacy
├── AboutService
├── AboutService_legacy
├── basic_client <= (*)
├── basic_service <= (*)
├── chat
├── FileTransferClient
├── FileTransferService
├── nameChange_client
├── SampleDaemon
├── sample_rule_app
├── signalConsumer_client
└── signal_service

動かしてみる

basic_serviceを起動する。

$  LD_LIBRARY_PATH=$AJ_ROOT/build/linux/x86/debug/dist/cpp/lib ./basic_service
AllJoyn Library version: v14.12.000.
AllJoyn Library build info: AllJoyn Library v14.12.000 (Built Thu Oct 15 03:27:58 UTC 2015 by thina - Git: alljoyn.git branch: '(detached from v14.12)' tag: 'v14.12' (+0 changes) commit ref: 0d71b216bb3a3cadc615c3eda6f8200093c5e117).
Interface created.
BusAttachment started.
RegisterBusObject succeeded.
ObjectRegistered has been called.
Connect to 'null:' succeeded.
NameOwnerChanged: name=org.alljoyn.Bus.sample, oldOwner=<none>, newOwner=:fKWGJuRH.2.
RequestName('org.alljoyn.Bus.sample') succeeded.
BindSessionPort succeeded.
Advertisement of the service name 'org.alljoyn.Bus.sample' succeeded.

basic_clientを動かす。何やらERROR NETWORKというエラーが発生しているようだが、とりあえず気にしない。(bindに失敗している模様。)

$  LD_LIBRARY_PATH=$AJ_ROOT/build/linux/x86/debug/dist/cpp/lib ./basic_client
AllJoyn Library version: v14.12.000.
AllJoyn Library build info: AllJoyn Library v14.12.000 (Built Thu Oct 15 03:27:58 UTC 2015 by thina - Git: alljoyn.git branch: '(detached from v14.12)' tag: 'v14.12' (+0 changes) commit ref: 0d71b216bb3a3cadc615c3eda6f8200093c5e117).
Interface 'org.alljoyn.Bus.sample' created.
BusAttachment started.
   0.728 ****** ERROR NETWORK                   common/os/posix/Socket.cc:346 | Binding (sockfd = 41) to 0.0.0.0 9955: 98 - Address already in use: ER_OS_ERROR
BusAttachment connected to 'null:'.
BusListener Registered.
org.alljoyn.Bus.FindAdvertisedName ('org.alljoyn.Bus.sample') succeeded.
Waited 0 seconds for JoinSession completion.
   0.737 ****** ERROR NETWORK                   common/os/posix/Socket.cc:346 | Binding (sockfd = 53) to 0.0.0.0 9955: 98 - Address already in use: ER_OS_ERROR
FoundAdvertisedName(name='org.alljoyn.Bus.sample', prefix='org.alljoyn.Bus.sample')
FoundAdvertisedName(name='org.alljoyn.Bus.sample', prefix='org.alljoyn.Bus.sample')
NameOwnerChanged: name='org.alljoyn.Bus.sample', oldOwner='<none>', newOwner=':fKWGJuRH.2'.
JoinSession SUCCESS (Session id=549605507).
JoinSession SUCCESS (Session id=-681846617).
'org.alljoyn.Bus.sample.cat' (path='/sample') returned 'Hello World!'.
Basic client exiting with status 0x0000 (ER_OK).

basic_clientは、AllJoynのネットワークへの参加(Join)成功後、HelloWorldという文字列を投げる。
basic_serviceは、basic_clientが送信してきたHelloWorldを連結して、basic_clientにレスポンスを返している。

パケットをキャプチャしてみる

ネットワーク上の動きを見てみるために、パケットをキャプチャしてみる。
これは、ADVERTISEMENT AND DISCOVERYの仕組みをパケットを観測することにより、理解を深めるためにやってみた。

ちなみに、tcpdumpのコマンドは以下。(邪魔なsshのパケットは無視している。)

 $ sudo tcpdump -i eth0 -nX not port 22

パケットの詳細解析は別途やるとして、ざっくり列挙してみる。
Advertisement and Discovery
に、プロトコルの詳細の説明があるので、合わせて読む。

  • 起動直後は、basic_servicebasic_clientともに以下の挙動。(若干パケットの内容は異なる。)
    • マルチキャストアドレス224.0.0.113に、何か送信する。
    • ブロードキャストアドレス10.0.2.225に、何か送信する。
    • マルチキャストアドレスff02::13aに、何か送信する。
  • 送信間隔を徐々に広げながら、上記を繰り返す。
  • 使用しているプロトコルは以下のようだ。(Wireshark上の表記)
    • ALLJOYN-NS
      • IPv4マルチキャスト
      • IPv6マルチキャスト
      • ブロードキャスト
    • MDNS
    • ICMPv3
    • ICMPv6
  • Helloとか、Worldという文字列は暗号化されていて、パケットからは観測することはできなかった。

キャプチャしたパケットは、以下にある。
https://github.com/toshiyukihina/alljoyn-sample-packets

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0