Twitterまとめ投稿 2011/12/29 [Twitter]
mihumi何とかmDNSでサービスするホストのIPアドレスが取れた。 | http://t.co/oVRVoXkY12/28 09:08
何とかmDNSでサービスするホストのIPアドレスが取れた。 [プログラミング]
前回、
dns-sd -C hostname 1 1
でIPアドレスが取れると書いた。これで問題ないかと思ったら、このままでは使えない。というのも、DNSServiceBrowse()では、サービスのインスタンス名は取れても、そのホスト名は取れないみたいだからだ。そんなわけで、サービスを提供するホストのIPを手に入れる方法を探さないといけない。
結局分かったのが、dns-sdでもIPアドレスを得る事が出来ていた。
dns-sd -L "instance name" _daap._tcp
中でやっていることは、DNSServiceResolve()で、DNSServiceBrowse()を使って得られるインスタンス名を使っている。それとサービス名(_daap._tcpとか)を合わせれば、ホスト名とポート番号が得られる。ホスト名からDNSServiceQueryRecord()を使って、kDNSServiceType_Aの設定で、IPアドレスを得る事が出来る。なんか回りくどいことしている気がしますね。
DNSServiceBrowse() -> DNSServiceResolve() -> DNSServiceQueryRecord()
の順で唱えていけば良いみたい。
IPアドレスさえ分かれば、後はdaapのしきたりに沿って曲の情報を得るだけです。そこいらのソースはJavaで出来るソースがあるので、それをC言語に落とし込めばいいわけだ。とはいえ、そのクライアントはまともに演奏できなかったりするのですが、そこいらは完全にJavaとCは違うと思うのでいいや。ソケットとかの共通点はMP3の演奏ではないと思うので、参考にはならないだろうし。でももしかしたら、今年中にプロトタイプぐらいは出来ちゃうかもしれない。とはいえ、まだmDNSの部分しか分かってないので、とりあえず、サービスするホストのIPを列挙するくらいしか出来ないのかな。
dns-sd -C hostname 1 1
でIPアドレスが取れると書いた。これで問題ないかと思ったら、このままでは使えない。というのも、DNSServiceBrowse()では、サービスのインスタンス名は取れても、そのホスト名は取れないみたいだからだ。そんなわけで、サービスを提供するホストのIPを手に入れる方法を探さないといけない。
結局分かったのが、dns-sdでもIPアドレスを得る事が出来ていた。
dns-sd -L "instance name" _daap._tcp
中でやっていることは、DNSServiceResolve()で、DNSServiceBrowse()を使って得られるインスタンス名を使っている。それとサービス名(_daap._tcpとか)を合わせれば、ホスト名とポート番号が得られる。ホスト名からDNSServiceQueryRecord()を使って、kDNSServiceType_Aの設定で、IPアドレスを得る事が出来る。なんか回りくどいことしている気がしますね。
DNSServiceBrowse() -> DNSServiceResolve() -> DNSServiceQueryRecord()
の順で唱えていけば良いみたい。
IPアドレスさえ分かれば、後はdaapのしきたりに沿って曲の情報を得るだけです。そこいらのソースはJavaで出来るソースがあるので、それをC言語に落とし込めばいいわけだ。とはいえ、そのクライアントはまともに演奏できなかったりするのですが、そこいらは完全にJavaとCは違うと思うのでいいや。ソケットとかの共通点はMP3の演奏ではないと思うので、参考にはならないだろうし。でももしかしたら、今年中にプロトタイプぐらいは出来ちゃうかもしれない。とはいえ、まだmDNSの部分しか分かってないので、とりあえず、サービスするホストのIPを列挙するくらいしか出来ないのかな。
Twitterまとめ投稿 2011/12/28 [Twitter]
mihumidns_sd.hもあんまり当てにならないが、自分で1からスクラッチするよりマシ | http://t.co/UAAI5VPD12/27 15:33
dns_sd.hもあんまり当てにならないが、自分で1からスクラッチするよりマシ [プログラミング]
とりあえず、現状ではローカルネットワークにあるサービスの問い合わせは出来ている。
DNSServiceBrowse()で_daap._tcpとか指定してあげれば、ザラザラと出てくるソースはmDNSResponderの中にdns-sd.cとしてあった。サービスを見つけるところまでは、それで充分なはず。
あと必要なmDNSとしての役割は、そのサービスを提供するホストのIPアドレスをもらってくる事だ。これが上手くいってない。マシンの名前は取れるんだけど、そこからIPアドレス等の情報が取って来れない。
下のは何だかこのままでは動かないソースでしたが、なんとかかんとか最終目的のDNSServiceGetAddrInfo()まで動かそうとした。
https://discussions.apple.com/thread/2138587?start=0&tstart=0
コールバック関数の中でコールバックってのも二回もやろうとしたらダメでした。その他、DNSServiceGetAddrInfo()を単体で動かそうとしたんだけど、address->sa_dataの中身に入っているであろうはずが、エラーも出ずに空で帰ってきた。そもそもmDNSResponderのソースコードの中にも一つも使っていない関数なので、正直上手く使えるものなのかが怪しい。
アドレスを得るにはDNSServiceGetAddrInfo()が名前のまんまだと思っていたのだけれども、結局、DNSServiceQueryRecord()あたりをいじくってIPアドレスを出そうとした。kDNSServiceType_Aとか、kDNSServiceType_AAAAあたりをパラメータに入れれば良さげ。
何だか上手くいかない。やっている間に気付いたのだけれど、Macの中に入っているdns-sdコマンドはやりたい事が出来ていた。サンプルのdns-sdはそこまでの事が出来なくて、自分でインプリしないといけない。まぁスクラッチするそもそものプログラミングに戻ったわけだ。きちんと出来ている例は下記。
dns-sd -C MacBookPro.local 1 1
これでMacBookPro.localのIPアドレスが取れる。下のように結果が出てくる。
ちなみにきちんと動く方は、Macに元々入っているdns-sdで、mDNSResponderのソースをコンパイルしたものではない。
1 1とあるけど、始めの方の1は、kDNSServiceType_Aの1でHost Addressを示している。ここに28を入れてあげれば、IPv6アドレスが返ってくる。次の1はkDNSServiceClass_INでいまいちよく分からないけど1を入れておけば良いらしい。
さて、これらを見るとdns-sd.hでも出来そうなので、DNSServiceQueryRecord()を使って格闘していけばなんとかなるんじゃないかと思っている。出来たらまたこのブログに書いていこうと思う。
DNSServiceBrowse()で_daap._tcpとか指定してあげれば、ザラザラと出てくるソースはmDNSResponderの中にdns-sd.cとしてあった。サービスを見つけるところまでは、それで充分なはず。
あと必要なmDNSとしての役割は、そのサービスを提供するホストのIPアドレスをもらってくる事だ。これが上手くいってない。マシンの名前は取れるんだけど、そこからIPアドレス等の情報が取って来れない。
下のは何だかこのままでは動かないソースでしたが、なんとかかんとか最終目的のDNSServiceGetAddrInfo()まで動かそうとした。
https://discussions.apple.com/thread/2138587?start=0&tstart=0
コールバック関数の中でコールバックってのも二回もやろうとしたらダメでした。その他、DNSServiceGetAddrInfo()を単体で動かそうとしたんだけど、address->sa_dataの中身に入っているであろうはずが、エラーも出ずに空で帰ってきた。そもそもmDNSResponderのソースコードの中にも一つも使っていない関数なので、正直上手く使えるものなのかが怪しい。
アドレスを得るにはDNSServiceGetAddrInfo()が名前のまんまだと思っていたのだけれども、結局、DNSServiceQueryRecord()あたりをいじくってIPアドレスを出そうとした。kDNSServiceType_Aとか、kDNSServiceType_AAAAあたりをパラメータに入れれば良さげ。
何だか上手くいかない。やっている間に気付いたのだけれど、Macの中に入っているdns-sdコマンドはやりたい事が出来ていた。サンプルのdns-sdはそこまでの事が出来なくて、自分でインプリしないといけない。まぁスクラッチするそもそものプログラミングに戻ったわけだ。きちんと出来ている例は下記。
dns-sd -C MacBookPro.local 1 1
これでMacBookPro.localのIPアドレスが取れる。下のように結果が出てくる。
Timestamp A/R Flags if Name T C Rdata 15:24:51.450 Add 2 5 MacBookPro.local. 1 1 192.168.1.4 15:24:53.361 Add 2 8 MacBookPro.local. 1 1 192.168.56.1
ちなみにきちんと動く方は、Macに元々入っているdns-sdで、mDNSResponderのソースをコンパイルしたものではない。
1 1とあるけど、始めの方の1は、kDNSServiceType_Aの1でHost Addressを示している。ここに28を入れてあげれば、IPv6アドレスが返ってくる。次の1はkDNSServiceClass_INでいまいちよく分からないけど1を入れておけば良いらしい。
さて、これらを見るとdns-sd.hでも出来そうなので、DNSServiceQueryRecord()を使って格闘していけばなんとかなるんじゃないかと思っている。出来たらまたこのブログに書いていこうと思う。
Twitterまとめ投稿 2011/12/25 [Twitter]
mihumimDNSについて参考にしようとするソースコードいろいろ。 | http://t.co/2ubgYmPF12/24 16:28
mDNSについて参考にしようとするソースコードいろいろ。 [プログラミング]
結局やりたい機能はRhythmboxにあるわけなんですが、いまいちソースからダイレクトに読み取れない。
http://ftp.gnome.org/pub/gnome/sources/rhythmbox/
mDNSなのですが
http://developer.apple.com/library/mac/samplecode/DNSServiceMetaQuery/
http://developer.apple.com/library/mac/#samplecode/DNSSDObjects/Introduction/Intro.html
アップル謹製ソースコードは、Xcode 4では開けずじまいなのでした。でもDNSServiceMetaquery.cは何とか使えそうな感じです。
MacOSXのmDNSコマンドが実はここにあった。
http://sourceforge.jp/projects/sfnet_darwinsource/downloads/mDNSResponder/108.4/mDNSResponder-108.4.tar.gz/
参考に出来るんじゃない? その中のSamplemDNSClient.cってヤツが、一番mDNSコマンドに似ているようです。というか、それ以外は見てません。これも前にやったように
gcc SamplemDNSClient.c -o SamplemDNSClient -framework corefoundation
ってすれば、コンパイルできました。動作はmDNSっぽいけど若干の違いはあり。
結局、Jmdnsってのが、Mac上ではきちんと動いていて、ソースも簡潔で見やすかった。
http://sourceforge.net/projects/jmdns/
Windowsではきちんと動かなかったのだが、MacOSXで動かすと他の参照したソースと同様に動いているみたいだった。一番、GUIで一番きれいに仕上がっている感じだし、自分が目的とするクライアントの動作とばっちり合っている。これからなんとかMacのソフトにつなげていければ、と思う。
あときちんと動かないけどFirefly clientも参考になりそう。
http://sourceforge.net/projects/fireflyclient/
あ、JmDNSと一緒で、これもJavaで出来てるんでした。
http://ftp.gnome.org/pub/gnome/sources/rhythmbox/
mDNSなのですが
http://developer.apple.com/library/mac/samplecode/DNSServiceMetaQuery/
http://developer.apple.com/library/mac/#samplecode/DNSSDObjects/Introduction/Intro.html
アップル謹製ソースコードは、Xcode 4では開けずじまいなのでした。でもDNSServiceMetaquery.cは何とか使えそうな感じです。
MacOSXのmDNSコマンドが実はここにあった。
http://sourceforge.jp/projects/sfnet_darwinsource/downloads/mDNSResponder/108.4/mDNSResponder-108.4.tar.gz/
参考に出来るんじゃない? その中のSamplemDNSClient.cってヤツが、一番mDNSコマンドに似ているようです。というか、それ以外は見てません。これも前にやったように
gcc SamplemDNSClient.c -o SamplemDNSClient -framework corefoundation
ってすれば、コンパイルできました。動作はmDNSっぽいけど若干の違いはあり。
結局、Jmdnsってのが、Mac上ではきちんと動いていて、ソースも簡潔で見やすかった。
http://sourceforge.net/projects/jmdns/
Windowsではきちんと動かなかったのだが、MacOSXで動かすと他の参照したソースと同様に動いているみたいだった。一番、GUIで一番きれいに仕上がっている感じだし、自分が目的とするクライアントの動作とばっちり合っている。これからなんとかMacのソフトにつなげていければ、と思う。
あときちんと動かないけどFirefly clientも参考になりそう。
http://sourceforge.net/projects/fireflyclient/
あ、JmDNSと一緒で、これもJavaで出来てるんでした。
Twitterまとめ投稿 2011/12/24 [Twitter]
mihumiFirefoxはこの1年で7倍高速になり、メモリ使用量は半分になりました - GIGAZINE http://t.co/50gTxC6t すばらしい。ソフトの革新というのはこうでなくてはいけないな。MSに煎じて飲ませたいくらいである。12/23 10:33
mihumiスティーブ・ジョブズの銅像はなぜアメリカではなくブダペストにあるのか? - GIGAZINE http://t.co/WfjRvsI3 銅像になる人は大抵どうしようもない人が多いのだが、それは作る人の資質の問題だと思われる。12/23 10:36
mihumi痛いニュース(ノ∀`) : 夕張市のゆるキャラ「メロン熊」が保育園を訪問、園児が号泣 - ライブドアブログ - ツイナビ・Twitter 公式ナビゲーター http://t.co/OQ3u0jvr @twinaviさんから こりゃ子供は泣くわな。12/23 15:56
mihumihttp://t.co/MOCh2zcF(朝日新聞社):太陽系外に地球サイズ惑星、二つ発見 大気がある可能性 - サイエンス - http://t.co/DzbzHlOT @twinavi そりゃあるだろうが、よくそんなに遠いところの小さな星を見つけられたものだ。12/23 16:00
mihumi東電社長が電気料金引き上げ表明 まず4月から事業者向け - MSN産経ニュース - ツイナビ・Twitter 公式ナビゲーター http://t.co/DC5LCBOJ @twinavi 東電の人件費から捻出されないところがすごい。他に会社が選べればなぁ。12/23 16:01
mihumi「家政婦のミタ」最終回で視聴率40% 関東地区 :日本経済新聞 - ツイナビ・Twitter 公式ナビゲーター http://t.co/Arig26Z7 @twinaviさんから 裏のトリビア見てた少数派。12/23 16:06
mihumiうちパソコンは家族共有なんだけど何気に見たらおい…なんだこの履歴…... on Twitpic - ツイナビ・Twitter 公式ナビゲーター http://t.co/2T5HxIzw @twinaviさんから 桐乃よりはマシだと思います。12/23 16:08
mihumiこんな絵が描かれたエレベーターなんかのれない>< ... on Twitpic - ツイナビ・Twitter 公式ナビゲーター http://t.co/lUjmj0mt @twinaviさんから シュールすぎるよ!12/23 16:11
mihumiこれからPS Vitaの購入を考えている人へ。注意点まとめ http://t.co/ogC4vnS4 @gizmodojapan #gizjpさんから12/23 16:26
Twitterまとめ投稿 2011/12/23 [Twitter]
mihumiAMD、世界初のPCIe Gen3対応GPU Radeon HD 7970を発表 http://t.co/QHj6c6KT #asciijp @asciijpeditors PCI Express 3.0ってどのくらい性能が違うものなのだろう。バスがボトルネックになる程度?12/22 16:52
mihumiau版iPhoneが「au Wi-Fi SPOT」対応 各種対応予定情報も http://t.co/gQJ0yQ5x #asciijp @asciijpeditors やっと使えるようになるか。何でこんなに時間がかかるか分からないけど、忙しかっただろうから仕方ない。12/22 17:03
mihumiPS3コントローラーでのツイートは疲れる。適当なキーボードでもぜんぜん使えるので、刺した方が精神衛生上ぜんぜんいいかんじ。んなわけでトロステ中。 #wtoro_psvita #maru02112/22 21:21
mihumiツイートが気になってトロステの内容が頭に入ってこないよ~ #wtoro_psvita #maru11312/22 21:30
mihumiトロステ、ツイート反映されたりされなかったりしない? #wtoro_psvita #maru11112/22 21:49
mihumi甥倉蔓延? #wtoro_psvita #maru19312/22 21:54
mihumiLTE対応待ちで #wtoro_psvita #maru19712/22 21:56
mihumiやう゛ぁい、ちょっとびぃ太欲しくなってきた #wtoro_minna #maru14112/22 22:14
Twitterまとめ投稿 2011/12/22 [Twitter]
mihumiドコモ、spモードに障害 メアドに不整合発生 http://t.co/U07ZgT2B #asciijp @asciijpeditorsさんから IPアドレスの管理がそれなりに面倒なことをしているから、こういう事も起こるんだろう。にしてもドコモの技術者は大変だな。12/21 20:35
mihumi~師範、ARMって何ですか!~ http://t.co/VCxpUHDm #asciijp @asciijpeditorsさんから わざわざUbuntuを動かさなくても、Debianを入れたほうが面倒が少なそうだ。12/21 20:56
mihumi国産タブレットガチンコ勝負! 最強はどれだ!? http://t.co/rk6yApHU #asciijp @asciijpeditorsさんから 値段がちと割高な気がしてしまうんですよね。まぁ十分安くしてはいるんだろうけど。12/21 21:16
mihumi日本に上陸した黒船タブレットは国内市場を席巻するか? http://t.co/4zauj1rm #asciijp @asciijpeditorsさんから 2万円台の物をしばらくしたら買おうと思う。でも中華フォントなのは気持ち悪いので、そういうのが改善されたらにしよう。12/21 21:54
Twitterまとめ投稿 2011/12/21 [Twitter]
mihumiもぉ北朝鮮はいいよ12/20 08:38
mihumiメキシコになんと「メイド喫茶がある」ということなので早速行ってきました - GIGAZINE http://t.co/7KueiwZW よりによって猫耳!(笑)12/20 08:45
mihumiわっはっは! Kindle Fireが売れて売れて笑えるほど売れてるわ! わっはっは! http://t.co/VZhND3Md @gizmodojapan #gizjpさんから12/20 08:49
mihumi2011ネットの風景:“炎上”するTwitter - ITmedia ニュース http://t.co/IrZSSuMO 人から金取ってるのに、それを気にしないアホ店員って多いよなぁ。どういう金の流れになってるのかすら分かってないらしい。12/20 10:04
mihumiMakefile.am - ふとしの日記 http://t.co/2NvvCcvW まとまっていて良い。makefile.inとかmakefile.amとか気になってた12/20 10:30
mihumi【後藤弘茂のWeekly海外ニュース】 GPUをCPUのように扱えるFusion System ArchitectureをAMDが発表 http://t.co/IeH0ADSW @pc_watchさんから ハードウェアもソフトウェアもボトルネックがなくなるのは良いことだ。12/20 10:59
mihumiDigital Audio Access Protocol - Wikipedia http://t.co/4Rk5SBHH daapd概要。やっぱりWikipedia。12/20 15:55
mihumiUnofficialなDAAPプロトコルフォーマット。プレインテキストじゃないので、telnetとかじゃ試せなかった。いきなり検証コードでつながな。 http://t.co/LwOwTKQ912/20 15:57
mihumi今更、daapクライアントを作ってみる? | http://t.co/T0GRiDhr12/20 20:07
mihumiTwitterまとめ投稿 2011/12/20 | http://t.co/2hKT3JmY12/20 23:00





