[リストへもどる]
一括表示
タイトルcpxFolderPilotStartでソケット通信をしたいのですが…
記事No130
投稿日: 2006/12/16(Sat) 13:18
投稿者営々
こんにちは。

ZOB Station BBS用cpxは、独自に実装したtelnetプロトコルでアクセスしているのですが、現在のところひとつの掲示板ごとにソケット開始→ログイン→ログアウト→ソケット終了という処理を行っています。

これを、cpxFolderPilotStartでソケット開始/ログインをcpxFolderPilotEndでログアウト/ソケット終了を行うようにできないかと考えて、とりあえずcpxFolderPilotStartの部分だけソースを変更したのですが、巡回開始させるとCMNがエラーで終了してしまいます。

Turbo C++でコンパイル可能にしたソースがこれ↓です。バージョン1.30が変更前、1.40が変更後。

>ttp://homepage2.nifty.com/~eiei_yh/cmn_zmm_t.lzh

なんせ、付け焼刃でネットワークプログラムを組んだので、どこがまずいのか良く分かりません。どなたかお知恵をお貸しいただけると助かります…

タイトルRe: cpxFolderPilotStartでソケット通信をしたいのですが…
記事No131
投稿日: 2006/12/16(Sat) 15:21
投稿者うぇいく   <weyk@nifty.com>
SDKのマニュアルには、それぞれのインスタンスが別であることが書かれていますが、大丈夫ですか?その間、同一のSocketを使用するのであれば、staticなところに、自力で一覧を管理する必要があります(Singletonにしてしまうなら、一覧ではなく上書きしないことの保証)。
# 同じインスタンスが呼ばれることが保障されているのは、各掲示板のBBSStart〜BBSEndの間だけです。
-- CMN v0.50cβ --

タイトルRe^2: cpxFolderPilotStartでソケット通信をしたいのですが…
記事No136
投稿日: 2006/12/24(Sun) 12:09
投稿者営々
うぇいくさん、ありがとうございます。

>その間、同一のSocketを使用するのであれば、staticなところに、自力で一覧を管理する必要があります

どうやらこれが原因みたいですね。しかしstatic変数の使い方も知らないし、ましてやDLL内部で宣言するにはどうやればいいのか…

ZOB Station BBSは当分掲示板ごとにログインする方式のままになりそうです…

タイトルRe3: cpxFolderPilotStartでソケット通信をしたいのですが…
記事No137
投稿日: 2006/12/25(Mon) 15:53
投稿者うぇいく
動作をSingleThreadに限定するのであれば、
SOCKET fd_socket;
を、
static SOCKET fd_socket;
にして、値の管理に注意する(初期化時やcloseしたら、INVALID_SOCKETに)ことで、動きませんか?
# 実際に使用するところでも、INVALID_SOCKETではないことをチェックするようにすれば、なにかおかしいことがあってもすぐにわかるかと・・・

それでも、同時に実行されてしまう可能性がある場合には、どーしても他のThreadに割り込まれてはまずい範囲のみ(openから変数への設定や、closeから変数のクリアとか)を、CriticalSectionを利用して、排他してしまえばよいかと・・・

# staticなpropertyは、クラス変数とも呼ばれます。個々のインスタンスの生成/破棄ではなく、クラスに定義されたときから存在し、そのクラスがなくなるまで存在し続けます(DLLでいえば、そのDLLがメモリに読み込まれた(DLL_PROCESS_ATTACH)ときから、DLL自体が解放される(DLL_PROCESS_DETACH)ときまで(インスタンスがたとえ0個でも)存在し続けます)

# 巡回中にDLL自体が(たとえば、PilotStartからFolderStartの間とかで)unloadされてしまうとだめですが・・・さすがにそれはない・・・はず。
-- CMN v0.50cβ --

タイトルRe4: cpxFolderPilotStartでソケット通信をしたいのですが…
記事No138
投稿日: 2006/12/25(Mon) 17:01
投稿者DECO
># 巡回中にDLL自体が(たとえば、PilotStartからFolderStartの間とかで)unloadされてしまうとだめですが・・・さすがにそれはない・・・はず。

さすがにそれはありません・・・。

DECO

タイトルRe: Re3: cpxFolderPilotStartでソケット通信をしたいのですが…
記事No139
投稿日: 2007/01/01(Mon) 17:05
投稿者営々
うぇいくさん、DECOさん、ありがとうございます。

色々試行錯誤している段階ですので、また状況がはっきりしたら書き込みいたします。

どうもすみません。