facebook twitter hatena line google mixi email
★お気に入り追加


■ このスレッドは過去ログ倉庫に格納されています

  • 1
  •  
  • 2013/04/19(金) 11:48:58.95
BonDriver共有ツール総合

ここまで見た
  • 722
  •  
  • 2014/11/28(金) 00:12:57.66
>>721
> SO_REUSEADDR は、CLOSE後のWAIT状態に在るポート再利用を求める
> オプションじゃなかったかな?、

もちろん本来の意味はその通りですね
ですが>>720の通り、winsockではそうではないと言うのが実際のところの様です
ttp://msdn.microsoft.com/en-us/library/ms740621.aspx
この辺読めばわかりますが、winsockでのSO_REUSEADDRは妙に強い権限を持ってますね
昔は良くあったMSの独自仕様って奴が今も生き残ってる例なんでしょう

ttp://www.geekpage.jp/programming/winsock/so_reuseaddr.php
あきみちさんですら知らないようなので多分知ってる人は殆どいないんじゃないでしょうか…

ちなみに、実際windows2000なんかでは、IIS動かしててもポート80をbind/listenするプログラムを
普通に動かせて、IISへのリクエストを横取りできてしまう様な状況があったと記憶しています
IISつくってる人ですら知らない仕様だったんじゃないのと邪推しちゃいますね…

ここまで見た
  • 723
  •  
  • 2014/11/28(金) 00:42:55.75
>>722
ワォ!。素敵ですねー。
winsockでは、排他したいなら SO_EXCLUSIVEADDRUSE なんだ。
だとすると、若しかしたら、winsock では SO_REUSEADDR の指定無しでも
TIME_WAIT状態のポートにbind出来るんじゃ無いかな?、
なんか、そんな仕様でないと、色々と苦しいでしょ。

ここまで見た
  • 724
  •  
  • 2014/11/28(金) 01:23:41.17
>>723
ええ、>>720に書いたのはそう言う意味です
しかしオプション無しの場合、多重起動によって自身が同じポートへbindしようとするのは防げますが、
他のSO_REUSEADDR有りのアプリが同じポートをbindする事は防げませんし、SO_EXCLUSIVEADDRUSE使っても
TIME_WAITでなら再bindできるみたいなので、それが一番良いかもしれませんね
いずれにせよ、その辺の挙動に関してはその内検証してみてどうするか決めるつもりです

ここまで見た
  • 725
  •  
  • 2014/11/29(土) 00:32:34.27
win 8.1 proで検証してみたら、SO_EXCLUSIVEADDRUSEに関しては>>720のURLの方の検証結果とは
微妙に違う結果でした
#FIN_WAIT_2があってもbindできる様でした
この場合、SO_EXCLUSIVEADDRUSEを使う事による不都合は何も無さそうですし、
仮にFIN_WAIT_2でbindできなくても、用途的に多分深刻な問題にはならないでしょうから、
とりあえずソースの方はSO_EXCLUSIVEADDRUSEを使うように変更しておきました
#ついでにiniのPACKET_FIFO_SIZE、TS_FIFO_SIZEのデフォルト値を64にしました(>>632)

ここまで見た
  • 726
  •  
  • 2014/11/29(土) 00:35:12.90
それからついでに調べたのですが、少なくともwin 8.1 proでは>>722のMSのURLに載っている
表通りの挙動をしないオプションの組み合わせパターンもあるようです
#コメント欄には、win 7でも表通りの動きしないぞと書いてる方が居ます
単なる誤記か、記事が書かれた当時とまた仕様が変わったのか…
いずれにせよ、一次ソースが信頼できないと言う状態は何とかして欲しいものです(;´Д`)

ここまで見た
  • 727
  •  
  • 2014/11/29(土) 08:24:09.08
サーバでIPアドレス指定してると127.0.0.1ではbindしないのね
同一ホストで繋がらなくて5分ぐらい悩んだ

ここまで見た
  • 728
  •  
  • 2014/11/29(土) 11:54:08.79
0.0.0.0でいいんじゃね

ここまで見た
  • 729
  •  
  • 2014/12/03(水) 20:16:22.94
大抵は0.0.0.0でいいだろうけど
ADDRESS=127.0.0.1;192.168.0.100
みたいな感じで複数アドレス指定できたらいいかなーと思った
全公開はしたくないけどこっちとそっちでは公開したい、みたいなニーズはあるかもしれない

ここまで見た
  • 730
  •  
  • 2014/12/04(木) 06:51:01.70
>>729
ナルホド…
正直需要としては相当ニッチな気はしますが、
対応自体は多分簡単なので、ちょっと試してみます

ここまで見た
  • 731
  •  
  • 2014/12/18(木) 10:57:26.79
ここを見てBonDriverProxyExを使ってみようと思って設定し、
BonDriverProxyEx.exeを実行しても何のプロセスも走りません
>>454のファイルで.iniを設定配置するだけで使えるはずですよね?
環境はWindows8.1 64bitです

ド素人の質問で申し訳ありません

ここまで見た
  • 732
  • 55
  • 2014/12/18(木) 12:35:56.59
起動しても、見た目にはなにも変わりませんよ。
タスクマネージャーで確認しましたか?

ここまで見た
  • 733
  •  
  • 2014/12/18(木) 18:10:48.73
はい
タスクマネージャーのプロセス、詳細、サービスのどこを見てもそれらしきものが出てきません

ここまで見た
  • 734
  •  
  • 2014/12/18(木) 18:15:49.64
タスクトレイにアイコンぐらい出したらいいのに

ここまで見た
  • 735
  •  
  • 2014/12/18(木) 20:14:22.98
ランタイムが入ってないとか? その場合はエラー吐くかな。
ソースをざっと見たところ、勝手に終了するのならini絡みかWinsock絡みの様で、
終了コードを確認したら切り分けできるかも。
手順分からんかった時のために、適当にぐぐったら出てきたのおいとく。
ttp://ips.nekotype.com/3476/

ここまで見た
  • 736
  •  
  • 2014/12/18(木) 21:58:28.49
>>731
>>735さんもおっしゃってますが、可能性が高いのはiniファイルがみつからない状態である事かと思います
iniファイルは、実行ファイルの拡張子だけをiniに変えた物をファイル名とした上で、
実行ファイルと同じフォルダに置く必要があります
例えば実行ファイルが「BonDriverProxyEx.exe」なら「BonDriverProxyEx.ini」となりますので、
確認してみてください

>>734
ぶっちゃけUI周りはめんどくさいんですよね(;´Д`)

ここまで見た
  • 737
  •  
  • 2014/12/19(金) 10:02:15.37
>>736
念のために.exeからコピペしてリネームしてみたけどダメでした
普通に実行するだけでたとえ設定ファイルの内容が間違っていようと
バックグラウンドプロセスに「BonDriverProxyEx.exe」が立ち上がるはずでいいんですよね?

>>735
ちょっと正しいか自信ないけど

echo %ERRORLEVEL%
2

となりました

ここまで見た
  • 738
  •  
  • 2014/12/19(金) 10:59:27.12
https://github.com/u-n-k-n-o-w-n/BonDriverProxyEx/blob/master/BonDriverProxyEx/BonDriverProxyEx.cpp#L1217-L1222
https://github.com/u-n-k-n-o-w-n/BonDriverProxyEx/blob/master/inc/BonDriverProxyEx.h#L53

[OPTION]
ADDRESS= ← このホスト名を解決できずに終了してるようですね。
正しいホスト名に直すか0.0.0.0 にしてみては。

ここまで見た
  • 739
  •  
  • 2014/12/19(金) 12:07:33.05
>>738
おお、それだ
なんか変な値が入力されてました
ありがとうございました

Bondriverの初期化ができませんのエラーが出るけどもう少し頑張ってみます

ここまで見た
  • 740
  •  
  • 2014/12/20(土) 12:10:35.44
うーん
BonDriverProxyExが長時間チューナー使用したり
クライアントが物理チューナー数超えて取り合い繰り返すと落ちるなあ

ここまで見た
  • 741
  • 730
  • 2014/12/20(土) 13:23:00.81
おかげさまでとりあえず使えるようにはなりました
ありがとうございます

ところでProxyEXをRDCTで地上と衛星を統合できているかたはいませんでしょうか?
当方の環境ではRDCTを経由させるとうまく動作しないのですが

ここまで見た
  • 742
  •  
  • 2014/12/20(土) 15:06:39.34
>>740
おお、今度は何だろう…
良かったら使用BonDriverとか設定、あともしわかるならで結構ですので、
現象の確実な再現方法を教えて頂けるでしょうか

ここまで見た
  • 743
  •  
  • 2014/12/22(月) 20:24:42.58
俺はRDCTの設定方法が知りたーい。

ここまで見た
  • 744
  •  
  • 2014/12/22(月) 21:27:40.01
>>742
まだ使い始めて間もないから色々実験中です
落ちたのはプレミアムのBonDriver_BDAなのでそっちに問題あるかもしれません
とりあえず試験運用終わってこれからプレミアムを山ほど録画してくので
問題の再現性がわかったら報告します
今はとりあえずRestartOnCrashで保険掛けてます

あと気になった点
チューナーを2つ登録してる場合(仮にA,Bとする
A,Bそれぞれ使用中で3つ目のクライアントが割り込んだ場合Bのチューナーを横取りしますが
そこから続けて割り込みかけるとずっとBのチューナーのみに割り込みがかかります
これはチューナーオープンの順番を記憶させて古い順番から割り込みかかるようにした方がいいと思いました

ここまで見た
  • 745
  •  
  • 2014/12/23(火) 00:29:21.48
>>741
俺もBonDriverProxyExとRDCTの組み合わせは
うまくいかなかった
地上と衛星の統合にそこまでこだわってなかったから、
今はBonDriverProxyExだけで使ってる

ここまで見た
  • 746
  •  
  • 2014/12/23(火) 02:05:51.04
Spinel でしか動作確認してないからねぇ

ここまで見た
  • 747
  •  
  • 2014/12/23(火) 23:45:29.18
>>744
了解でーす

> あと気になった点

ナルホド、チューナが足りない時に既存のどれを横取りするかは、取れるやつを取れば良いだろとしか考えてませんでした
とりあえずカレントバージョンで対応してみました

ここまで見た
  • 748
  •  
  • 2014/12/23(火) 23:51:05.80
BonDriver_RDCTに関しては、内部でSpinelに特化した処理をしてるのかもしれませんね
時間ができたらちょっと調べてみます

ここまで見た
  • 749
  •  
  • 2014/12/23(火) 23:51:41.68
>>742
ログ見たら落ちてたみたいなので
イベントビューアーのログ貼っておきます

障害が発生しているアプリケーション名: BonDriverProxyEx_x86.exe、バージョン: 1.1.4.5、タイム スタンプ: 0x5482e44a
障害が発生しているモジュール名: d3d9.dll_unloaded、バージョン: 0.0.0.0、タイム スタンプ: 0x4ce7b7b3
例外コード: 0xc0000005
障害オフセット: 0x5ea596b4
障害が発生しているプロセス ID: 0xe0c
障害が発生しているアプリケーションの開始時刻: 0x01d01dab9b16901f
障害が発生しているアプリケーション パス: D:\PT2\BonDriverProxyEx\x86\BonDriverProxyEx_x86.exe
障害が発生しているモジュール パス: d3d9.dll
レポート ID: 6a2bc155-8a75-11e4-ad80-005056c00008

ここまで見た
  • 750
  •  
  • 2014/12/24(水) 02:17:02.38
古い機種で申し訳ないのですが、HDUSFで上手く動きません。
チューナー切替時に障害が発生するようです。

HDUSF → PT2 → HDUSF(BonDriverの初期化ができません。)
障害が発生しているモジュール名: nnb4hdus.dll
機嫌の良い時と悪い時がありますが、大体悪いです。
BonDriver付属のログ吐き版dll,exeを使用してみましたが、チューナーを開けてないので、
エラー時のログは取得できませんでした。

【OS】Windows8.1 x64 テストモード
【BonDriverProxy】BonDriverProxy v1.1.4.7 x86
【Tuner】SKnet MonsterTV HDUSF, PT2
【BonDriver】BonDriver_nnb_009
【Client】TVTest dev 0.9.0.0 x86

ここまで見た
  • 751
  • 749
  • 2014/12/25(木) 17:34:45.58
Debug版のBonDriverProxyでは調子が良いので、ログ取れず。
Release版でチューナー切替を頻繁に行って、次の画面は得られました。
何か関係ありますでしょうか。
https://i.imgur.com/0k9WJ9l.jpg

https://i.imgur.com/JEHAe9A.jpg


ここまで見た
  • 752
  • 749
  • 2014/12/25(木) 17:39:05.83
nnb4hdus.dllをメモ帳で開いてみたら上記画像の記述を見つけました。
ソースが公開されていないので、どうしようもないのでしょうか?

ここまで見た
  • 753
  •  
  • 2014/12/25(木) 20:24:05.10
>>750
HDUSFが生きていたことに感動した。

ここまで見た
  • 754
  •  
  • 2014/12/25(木) 20:34:27.71
>>752
直接の解決策じゃないけど、
使っているバージョンはBonDriver_nnb_009ですか?
それ以外にも、
ドライバー名:最終バージョン
BonDriver_HDP2 : 006
BonDriver_nnc4hd : バージョン表記なし
がHDUSFに対応していたと思うけど???

BonDriver_HDUS(人柱版14)改造版4はHDUS(F)は未対応だったと記憶

ここまで見た
  • 755
  • 749
  • 2014/12/25(木) 21:22:43.56
>>754
使用ドライバーはBonDriver_nnb_009です。

BonDriver_HDP2はWinUSBを使えるという優位性があるのですが、
特定のチャンネル(28chだか32ch)で受信感度が落ちるというバグがあり、使用できません。
BonDriver_HDP2は011まで持ってます。
BonDriver_nnc4hdは一応持ってますが、使ったことが無いかもしれません。

SpinelでBonDriver_nnb_009は問題が無かったので、このまま移行したかったのですが。

ここまで見た
  • 756
  •  
  • 2014/12/25(木) 21:46:26.51
>>749
少なくともd3d9.dllはサーバモジュールが直接ロードするものではないので、BonDriver_BDAの内部で
その辺のdllインスタンスとそのリソースの扱いがどうなってるかでしょうか…

それと関係するかどうかわかりませんが、SetChannel()内部とGetSignalLevel()内部で同じメソッドである
GetSignalState()が呼ばれており、BonDriverProxyではこれらはメインスレッドとTS読み込みスレッドから
非同期で呼ぶようになっていた為、これが大丈夫なのかどうか気になったので、とりあえずSetChannel()と
GetSignalLevel()の呼び出しを排他にしてみました
これで試してみてもらえるでしょうか

ここまで見た
  • 757
  •  
  • 2014/12/25(木) 21:51:28.86
>>750-752
画像を見る限り、BonDriver_nnb内部での問題に見えますね…
最初はロードでき、それを一度Release()した後で、再度ロードする時にコケると言う事ですよね?
うーん、Release()後の時点で何らかのリソースリークが起きているとかでしょうか…
#あるいは、終了処理に時間が掛かるとか

ソースが無いのと、なにぶん当方が対象ハードウェアを持っていないのとで、調べる手段自体が
無い状態なのが厳しいですね(;´Д`)
モノを持っている人に突っ込んで調べてもらえるのが一番確実なのですが…

>>756に書いた修正はBonDriver_nnbにも影響するかもしれないので、とりあえず試してみてもらえるでしょうか
#期待薄ではありますが

ここまで見た
  • 758
  •  
  • 2014/12/25(木) 21:54:28.97
あ、バイナリ置いてる場所は>>701に書いてるのと同じです

ここまで見た
  • 759
  • 749
  • 2014/12/25(木) 22:16:17.61
>>757
お世話になっています。
仰る通り、再度ロードする時にコケるということです。
残念ながら、current(20141225)でも症状は改善しませんでした。

ここまで見た
  • 760
  •  
  • 2014/12/25(木) 22:54:57.69
>>759
やっぱり関係ありませんでしたか…
Spinelでは大丈夫との事なので、その辺りちょっと調べてみようかと思います
#それくらいしか出来る事が無いとも言いますが(;´Д`)

ここまで見た
  • 761
  •  
  • 2014/12/25(木) 23:50:04.87
>>755
011が最終でした。ごめんなさい。

ここまで見た
  • 762
  •  
  • 2014/12/25(木) 23:54:55.85
設定見直してるんだけどサーバーでADDRESS設定するのって何のため?

ここまで見た
  • 763
  •  
  • 2014/12/26(金) 00:52:36.58
接続を受け付けるクライアントの範囲を決めるため

ここまで見た
  • 764
  •  
  • 2014/12/26(金) 22:39:12.85
>>753
死にかけてるのかもねw

ここまで見た
  • 765
  •  
  • 2014/12/28(日) 09:04:44.54
CentOS 6.6+PT2+softcasの構成で
make driverを実行した際

g++ -Wall -pthread -O2 -DNDEBUG -fPIC -c -o BonDriver_LinuxPT.so.o BonDriver_LinuxPT.cpp
BonDriver_LinuxPT.cpp: In static member function ‘static void* BonDriver_LinuxPT::cBonDriverLinuxPT::TsSplitter(void*)’:
BonDriver_LinuxPT.cpp:852: error: jump to label ‘complete’
BonDriver_LinuxPT.cpp:1108: error: ここから
BonDriver_LinuxPT.cpp:829: error: skips initialization of ‘unsigned char ver’
make: *** [BonDriver_LinuxPT.so.o] エラー 1

で止まってしまいます。

make server make clientは問題なく完了するのですが

ここまで見た
  • 766
  •  
  • 2014/12/28(日) 10:37:18.43
>>765
スミマセン、修正しておきました(;´Д`)

元々win8+テレ東問題を調べてた時に、TsSplitter部分のみを切り出してファイルに適用するツールにしたのを
VCでコンパイルしてたのですが、それに加えた変更を逆移植した際の確認不足でした
失礼しました(;´Д`)

ここまで見た
  • 767
  •  
  • 2014/12/28(日) 12:03:30.21
早速のご対応ありがとうございます。

ファイルを入れ替えて、Make driver実行で
ドライバは作成できました。
ただ、コンパイル中以下の警告がでました。
色々、試させていただきます。


g++ -Wall -pthread -O2 -DNDEBUG -fPIC -c -o BonDriver_LinuxPT.so.o BonDriver_LinuxPT.cpp
BonDriver_LinuxPT.cpp: In static member function ‘static void* BonDriver_LinuxPT::cBonDriverLinuxPT::TsSplitter(void*)’:
BonDriver_LinuxPT.cpp:636: 警告: ‘iNumSplit’ may be used uninitialized in this function
BonDriver_LinuxPT.cpp:637: 警告: ‘rpmt_ci’ may be used uninitialized in this function
BonDriver_LinuxPT.cpp:638: 警告: ‘pmt_tail’ may be used uninitialized in this function
g++ -shared -Wall -pthread -O2 -o BonDriver_LinuxPT.so BonDriver_LinuxPT.so.o -ldl
g++ -Wall -pthread -O2 -DNDEBUG -fPIC -c -o BonDriver_DVB.so.o BonDriver_DVB.cpp
BonDriver_DVB.cpp: In static member function ‘static void* BonDriver_DVB::cBonDriverDVB::TsSplitter(void*)’:
BonDriver_DVB.cpp:809: 警告: ‘iNumSplit’ may be used uninitialized in this function
BonDriver_DVB.cpp:810: 警告: ‘rpmt_ci’ may be used uninitialized in this function
BonDriver_DVB.cpp:811: 警告: ‘pmt_tail’ may be used uninitialized in this function
g++ -shared -Wall -pthread -O2 -o BonDriver_DVB.so BonDriver_DVB.so.o -ldl

ここまで見た
  • 768
  •  
  • 2014/12/28(日) 23:59:51.54
>>767
その警告に関しては、問題無いようにつくってるつもりなので大丈夫かと思います
#コンパイラにバグが無い限りは、ですが

ここまで見た
  • 769
  •  
  • 2014/12/29(月) 00:01:26.71
以下、気になる人向けに具体例で言うと、形的には下記の例で出る警告
(clangでは出ないかもしれませんが)と大体同じです
---
// gcc -Wall -O2 a.c
// 疑似乱数を10回取得し、奇数->偶数の順に並んでいる部分のみ出力する
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int ac, char *av[])
{
int i, flag, odd, r;
flag = 0;
srand(time(0));
for (i = 0; i < 10; i++)
{
if ((r = rand()) % 2)
{
flag = 1;
odd = r;
}
else
{
if (!flag)
continue;
printf("flag[%d] odd[%d] even[%d]\n", flag, odd, r);
flag = 0;
}
}
return 0;
}
---

ここまで見た
  • 770
  •  
  • 2014/12/29(月) 00:02:26.31
警告を出なくするのは簡単なのですが、意味の無い初期化をする事になるだけですし、もしコンパイラに
バグがあればその警告を出なくしていたところでどのみち意図した通りには動かないと思うので、
放置している次第です

ここまで見た
  • 771
  •  
  • 2015/01/04(日) 10:24:01.72
色々試してはいるのですが

IBonDriver を取得できません。
CreateBonDriver()の呼び出しでNULLが返されました。

このエラーから進まず、詰んでいます。
ちなみに、chinachuを使っての録画等は可能です。

以下が現状の構成と設定内容です。

<クライアント>
Win8.1+Tvtest+winscard.dll
BonDriver_Proxy.dll+ini
iniの内容

[OPTION]
ADDRESS=192.168.24.44
PORT=1192
BONDRIVER=/home/tv/BON/BonDriverProxy
CHANNEL_LOCK=0
CONNECT_TIMEOUT=5
USE_MAGICPACKET=0

[MAGICPACKET]
TARGET_ADDRESS=192.168.24.44
TARGET_PORT=1192
TARGET_MACADDRESS=AA-BB-CC-DD-EE-FF

[SYSTEM]
PACKET_FIFO_SIZE=16
TS_FIFO_SIZE=32
TSPACKET_BUFSIZE=192512

ここまで見た
  • 772
  •  
  • 2015/01/04(日) 10:27:43.99
続き

<サーバー>
CentOs6.6+PT2+wincard.cpp
設置場所の中身
BonDriverProxy
BonDriverProxy.ini
BonDriver_LinuxPT2-T0.so
BonDriver_LinuxPT2-T0.so.conf
BonDriver_ProxyPT2-T0.so
BonDriver_ProxyPT2-T0.so.conf

【BonDriverProxy.ini】
[OPTION]
ADDRESS=127.0.0.1
PORT=1192
CHANNEL_LOCK=0
CONNECT_TIMEOUT=5
USE_MAGICPACKET=0
[SYSTEM]
PACKET_FIFO_SIZE =16
TSPACKET_BUFSIZE =192512

【BonDriver_LinuxPT2-T0.so.conf】
[OPTION]
ADDRESS=127.0.0.1
PORT=1192
BONDRIVER=/home/tv/BON/BonDriverProxy
CHANNEL_LOCK=0
CONNECT_TIMEOUT=5
USE_MAGICPACKET=0

ここまで見た
  • 773
  •  
  • 2015/01/04(日) 11:41:01.21
>>771-772
つっこみどころがかなり多いなw

例としてWin8.1側のTVTestでCentOS6.6側のPT2のT0をchardev版のデバイスドライバで使うとして、
クライアント側のiniに関しては
BONDRIVER=/home/tv/BON/BonDriverProxy/BonDriver_LinuxPT-T0.so
みたいに使用するsoファイルを指定

サーバ側では
$ /home/tv/BON/BonDriverProxy/BonDriverProxy 192.168.24.44 1192
とかやってサーバを起動しておいて(BonDriverProxy.iniは必要ない)、BonDriver_LinuxPT-T0.so.confは
https://raw.githubusercontent.com/u-n-k-n-o-w-n/BonDriverProxy_Linux/master/BonDriver_LinuxPT.conf
の#DEVICEの行を
#DEVICE=/dev/pt1video2
に編集

この状態で、TVTestでBonDriver_Proxyを選択したら/dev/pt1video2からのストリームが受信できるはず

とりあえず、一度落ち着いて
https://github.com/u-n-k-n-o-w-n/BonDriverProxy_Linux/blob/master/README.md
をちゃんと読む事をおすすめするわ

フリックラーニング
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード