実際に送信する方法は、こんな感じ。
まず大本の ow.dht.DHT クラスのインスタンスを dht とすると、
dht.getRoutingService().getMessageSender().send(dest, msg);
となる。ちょっと長い。
dest は ow.messaging.MessagingAddress インターフェイス。これは
トランスポート層を取り替えられるため。SocketAddress にしちゃうと
インターネット専用になっちゃうから。ま、実質はインターネットが大半だろう
けど。一応、シミュレーション用のアドレス EmuMessagingAddress が用意されて
いるのでインターネット専用ってわけじゃない。
このアドレス、どう作るかというと、ow.messaging.MessagingProvider.getMessagingAddress(java.lang.String hostAndPort) を使う。
dht.getRoutingService().getMessagingProvider().getMessagingAddress("www.foobar.com:8888");
こんな感じ。
あとは送信されてきたメッセージから取り出す方法もある。
ow.messaging.Message.getSource().getAddress()
ちなみにこういうのを調べるにも JavaDoc が大活躍。MessagingAddress のページを開いて、
画面上部の「使用」ってリンクを開けば MessagingAddress を使っているメソッド
が一覧で見れる。便利。
これでメッセージを送れるのだが、問題はトランスポート層。どんな方法で送るか、
それが問題で以下続く。
まず大本の ow.dht.DHT クラスのインスタンスを dht とすると、
dht.getRoutingService().getMessageSender().send(dest, msg);
となる。ちょっと長い。
dest は ow.messaging.MessagingAddress インターフェイス。これは
トランスポート層を取り替えられるため。SocketAddress にしちゃうと
インターネット専用になっちゃうから。ま、実質はインターネットが大半だろう
けど。一応、シミュレーション用のアドレス EmuMessagingAddress が用意されて
いるのでインターネット専用ってわけじゃない。
このアドレス、どう作るかというと、ow.messaging.MessagingProvider.getMessagingAddress(java.lang.String hostAndPort) を使う。
dht.getRoutingService().getMessagingProvider().getMessagingAddress("www.foobar.com:8888");
こんな感じ。
あとは送信されてきたメッセージから取り出す方法もある。
ow.messaging.Message.getSource().getAddress()
ちなみにこういうのを調べるにも JavaDoc が大活躍。MessagingAddress のページを開いて、
画面上部の「使用」ってリンクを開けば MessagingAddress を使っているメソッド
が一覧で見れる。便利。
これでメッセージを送れるのだが、問題はトランスポート層。どんな方法で送るか、
それが問題で以下続く。