よろしくお願いします。
【問題】
MDNSの戻りをHT03Aで受けられない。
しかし、x86上のandroidでは動く。
http://www.android-x86.org/
【詳細】
現在、MDNSを利用してIPアドレスを取得するアプリケーションを作成しています。
MulticastSocketクラスを使用して、送受信するプログラムです。
・Multicastを送信するアクティビティ
・Multicastを受信するサービス
の単純な構成です。
この構成のプログラムが、
x86上の環境では、送受信ともに正常に処理されますが、
ht03Aだと送信は処理されますが、受信が処理されません。
ちなみに、
・HT03Aは、無線LANでサーバにアクセスしています。
⇒有線と無線の違いが起因している?
・Wiresharkでパケットキャプチャしたところ、
HT03Aから送信されたリクエストに対しても、レスポンスが返却されています。
・HT03Aから無線LAN経由でWEBサーバなどにアクセスは出来ます。
⇒無線LANの通信は問題ない?
・パーミッションは、以下を指定しています。
android.permission.CHANGE_WIFI_MULTICAST_STATE
android.permission.INTERNET
何か解析するうえでの情報を持っている人がいれば、
ご助言を頂きたいと思います。
なお、x86マシン、HT03Aともに、android1.6です。
よろしくお願いします。
G1、ADP1、GDDPhone、HT-03Aでは通常はWiFiのアドホック接続が出来ません。
※参考
http://groups.google.co.jp/group/android-developers/msg/b846c3c253a59687
せっかくWiFiのマルチキャスト機能があるのに宝の持ち腐れ状態です。
これができれば、すれ違い通信などが実現できるのですが・・・
動作確認はしていませんが、rootが取得できるADP1などの端末であれば、
なんとか設定出来るような情報もあるようです。
http://www.google.co.jp/search?hl=ja&q=adp1+adhoc+%22WiFiAdhoc+%3D+1%22&btnG=%E6%A4%9C%E7%B4%A2
テザリング防止などの事情があるのだと思いますが、
早く標準でもadhoc接続できるようになって欲しいものです。
On 12月17日, 午後11:48, Keisuke Nakamura <ganbare.keis...@gmail.com>
wrote:
構成を確認していなかったので、
ちょっとまとはずれな回答だったかもしれません。
すみません。
環境がadhocでないとすれば、別の原因かもしれません。
On 12月18日, 午前2:45, Akio Kondo <koji...@gmail.com> wrote:
> こんどうです。
>
> G1、ADP1、GDDPhone、HT-03Aでは通常はWiFiのアドホック接続が出来ません。
> ※参考
> http://groups.google.co.jp/group/android-developers/msg/b846c3c253a59687
>
> せっかくWiFiのマルチキャスト機能があるのに宝の持ち腐れ状態です。
>
> これができれば、すれ違い通信などが実現できるのですが・・・
>
> 動作確認はしていませんが、rootが取得できるADP1などの端末であれば、
> なんとか設定出来るような情報もあるようです。http://www.google.co.jp/search?hl=ja&q=adp1+adhoc+%22WiFiAdhoc+%3D+1%...
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
k-sukeです。遅いレスポンスですいません。
返信ありがとうございます。
いくつか非常に大事なことを記載していませんでした。
・HT-03AとMDNSサーバは、無線LANアクセスポイントを経由している
・x86端末は有線LANで通信している。
それで、本日、x86マシンで無線LANで試したところ、やはりNGでした。
よって、無線LANとマルチキャストの受信の組み合わせが怪しいと睨んでいます。
しかし、HT-03A上で、MDNSクライアントを実装したperlプログラムを動かしたところ、
正常にレスポンスを受信できました。
よって、HT-03Aのハードの問題ではなく、ソフト問題なのかと。。。
なので、dalvikvmが無線LANとマルチキャストの受信が出来ないのかと思っています。
しかし、nagamatsuさんも記載されているように、リファレンス的には1.6で、受信出来るべきなのかと悩んでおります。
>Android 1.6から以下の APIが WifiManagerに追加されており、フレームワーク側での Multicastの対応は含まれているようです。
>http://developer.android.com/reference/android/net/wifi/WifiManager.html#createMulticastLock(java.lang.String)
いまひとつ、
「android1.6のdalvikvmでは、無線LAN環境でマルチキャストの受信が出来ない」
と決めつけて良いのかを悩んでおります。
2009年12月18日9:38 Tatsuo Nagamatsu <naga...@gmail.com>:
今野です。はじめまして。
> いまひとつ、
> 「android1.6のdalvikvmでは、無線LAN環境でマルチキャストの受信が
> 来ない」と決めつけて良いのかを悩んでおります。
現在、Android 1.6 + ADP1で開発をしていますが、マルチキャストの
送受信に問題ありませんよ。パーミッションはINTERNETだけでOKです。
まず、一般的な話題として、無線LANのAPはマルチキャストは再送を
しないので、ロストする可能性がありますが ....
> しかし、HT-03A上で、MDNSクライアントを実装したperlプログラムを
> 動かしたところ、正常にレスポンスを受信できました。
こうなると、HT-03Aか、ソフトウェア上の問題かもしれません。
#ただ、マルチキャスト系仕様の運用規定では、Wireless接続時には
#複数回繰り返すことが、必須とされているものもあります。
ちょっと、気になって関連のプログラムを確認して見たのですが
Android v1.6から、インタフェース毎にバインドするような
改修を実施していました。
改修の経緯は(早くも)うろ覚えになってしまったのですが ....
以前のAndroidバージョンは、ローカルインタフェースが取得でき
なかったので、単にそのAndroid特有な実装を元に戻しただけかも
しれませんが ....
以上、ご参考下さい。
--
Satoshi Konno
http://www.cybergarage.org
Keisuke Nakamura さんは書きました:
USBからはドキュメントフォルダーしか見えないので、
Androidアプリは通常ルートではインストールできません。
1台しかないので、以下の改造は行っていません。
http://nookdevs.com/Rooting
埋め込みフォントのPDFで日本語は表示できました。
埋め込みナシだと、何も表示されません。Droidフォント
は入っていないようです。
こんな状態ですが、明日、新宿にお越しいただければ
デモし、Kindle国際版と比較して触っていただけます。
出版社、印刷会社の方と同席になります。
・日時 12月22日(火) 各回1時間程度
【第一回】 17:00-
【第二回】 18:30-
・場所 イースト株式会社
http://www.est.co.jp/eastinfo/map.shtm
・参加申込み
hpma...@est.co.jp 宛に、
1.お名前
2.【第一回/第二回】
をメールしてください。
1社何名で結構ですのでお名前を列挙してください。
お名前だけで、名刺の提示も不要です。
満員の場合は、ご連絡します。
返信遅くなりすいません。
インラインで回答させて頂きます。(一部、文面を削除しました。)
> 現在、Android 1.6 + ADP1で開発をしていますが、マルチキャストの
> 送受信に問題ありませんよ。パーミッションはINTERNETだけでOKです。
おぅ。そうですか。
> ちょっと、気になって関連のプログラムを確認して見たのですが
> Android v1.6から、インタフェース毎にバインドするような
> 改修を実施していました。
>
> http://cgupnpjava.svn.sourceforge.net/viewvc/cgupnpjava/trunk/cyberlink/ChangeLog?revision=141&view=markup
>
> 改修の経緯は(早くも)うろ覚えになってしまったのですが ....
>
> 以前のAndroidバージョンは、ローカルインタフェースが取得でき
> なかったので、単にそのAndroid特有な実装を元に戻しただけかも
> しれませんが ....
私の受信側の実装は、MulticastSocketクラスを使用して実装しました。
⇒諸々の事情でソースが手元になく、提示できないです。すいません。
MulticastSocket#receive
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/net/DatagramSocket.html#receive%28java.net.DatagramPacket%29
もうすこし、低レベルのコードで実装すれば動くのですかね。
英語が不得手なもので、誤訳しているのかもしれませんが、
下記のスレッドでも動いたって人もいるのかと思っています。
http://code.google.com/p/android/issues/detail?id=2917
ちなみに、このスレッドに記載されているJMDNSといるライブラリで動かなかったので、
MulticastSocketクラスを使用したコードを記述しました。
まぁ、それでもNGだったのですが。。。
http://sourceforge.net/projects/jmdns/
とにかく、もうすこし、低レベルのコードで再実装してチャレンジしてみまっす。
実験環境を使用できるのが限定されているので、
結果のご報告が遅れるかもしれませんが、ハッキリしたらご連絡をします。
なお、その他の情報をお持ちの人がいれば、投稿して頂くと助かります。^-^;
今野です。はじめまして。
> 私の受信側の実装は、MulticastSocketクラスを使用して実装しました。
> ⇒諸々の事情でソースが手元になく、提示できないです。すいません。
より直接的な回答をすれば、下記がSSDPというマルチキャストベース仕様の
一部を、MulticastSocketクラスを利用した実装例になります。
> もうすこし、低レベルのコードで実装すれば動くのですかね。
> 英語が不得手なもので、誤訳しているのかもしれませんが、
> 下記のスレッドでも動いたって人もいるのかと思っています。
> http://code.google.com/p/android/issues/detail?id=2917
> ちなみに、このスレッドに記載されているJMDNSといるライブラリで動かな
かったので、
> MulticastSocketクラスを使用したコードを記述しました。
> まぁ、それでもNGだったのですが。。。
> http://sourceforge.net/projects/jmdns/
少なくともJ2SEの感覚で利用すると駄目かもしれません。
丁寧にデバッグすることをお勧めします。
マルチキャストクラスは1.0からようやく導入されて、
API上は綺麗に利用できそうなのですが ....
実装レベルだと未実装のものがあったり、Exceptionが
発生したりと、J2SEと挙動が違うものが多々あります。
皆さん同様、こちらも試行錯誤です。
> より直接的な回答をすれば、下記がSSDPというマルチキャストベース仕様の
> 一部を、MulticastSocketクラスを利用した実装例になります。
>
> http://cgupnpjava.svn.sourceforge.net/viewvc/cgupnpjava/trunk/cyberlink/upnp-stack/src/main/java/org/cybergarage/upnp/ssdp/HTTPMUSocket.java?revision=118&view=markup
上記のソースコードを参考に、MDNSの受信部のソースを記述しましたが、
結果は同じでした。
有線環境はOK。無線環境はNG。
⇒receiveメソッドが応答しなくなる。
> 少なくともJ2SEの感覚で利用すると駄目かもしれません。
> 丁寧にデバッグすることをお勧めします。
ちょっと、時間がなく、丁寧にデバッグが出来ませんでした。orz...
年明けに、丁寧にデバッグしてみまっす。