1スレッド64ソケット制限に対応するには?

解決


MenPin  2010-05-19 17:01:46  No: 71625  IP: 192.*.*.*

winsock2でWSAASyncSelectを使って1スレッド64ソケット制限に対応するサーバープログラムを考えているのですが、
具体的に64ソケット制限というのは、1スレッドにつき1つのウインドウプロシージャを用意しなくてはならないのでしょうか?
それとも1つのウインドウプロシージャで複数のスレッドのメッセージを受け持つことが出来るのでしょうか?
64ソケットというのは1スレッドにwinsockの定義や処理のどの部分を含めればいいのでしょうか?
よろしくお願いします。m(_ _)m

編集 削除
tetrapod  2010-05-19 18:41:24  No: 71626  IP: 192.*.*.*

64ソケット制限っつーのはたぶんこの辺の話
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html

それ以前の話として「ライセンス的に」WinXP では同時接続数上限が10となっているので
接続数が10を超えるのであれば  ライセンス上  「サーバOS」を使う必要があるよ
# c:\windows\system32\eula.txt の 1.4 だが、読んでもよくわからん。
# ぐぐってみるといろいろ意見が分かれているようだが・・・
# どれが正しくてどれが正しくないか深く追求する気にならん

編集 削除
MenPin  2010-05-19 19:04:03  No: 71627  IP: 192.*.*.*

回答ありがとうございます。ライセンス上限があるんですね。。。
意見が分かれているなら、とりあえず問題なしという方向で考えます。

編集 削除
MenPin  2010-05-19 22:46:32  No: 71628  IP: 192.*.*.*

引き続き64ソケット制限について回答お待ちしてます。

編集 削除
MenPin  2010-05-19 22:51:35  No: 71629  IP: 192.*.*.*

というか、子ウインドウのウインドウプロシージャもスレッドの一つと言えますか?

編集 削除
MenPin  2010-05-20 00:24:11  No: 71630  IP: 192.*.*.*

スレッドの数だけ子ウインドウを作らなければいけない場合、
複数の子ウインドウに対し1つのウインドウプロシージャを
使いまわす(再入可能)ことは出来ますか?

編集 削除
tetrapod  2010-05-20 10:14:45  No: 71631  IP: 192.*.*.*

高い目標が存在すること自体はよいことなんだけど、
いきなりとびつくには課題のレベルが高すぎるんでないかなーとか思ったり。

装備も知識も経験もなしにK2峰に登ろうとしているようなイメージを抱いてしまうな。
まずは地元の低い山が確実に安全に登れるようにならなきゃならんだろうに。

1:1通信できるサーバー・クライアントのペアをまず組んでみよう。
ここまでできるようになるだけでも、思いっきりハードルがあるぜ・・・
# ルータやファイアウォールの設定とか、プログラム以外の項目に腐るほど

それができたら1:多ができるようにしてみよう(1:10以下)
1:64超はそれらができてから手を出しても遅くない。

> 子ウインドウのウインドウプロシージャもスレッドの一つと言えますか?
文言の意味がわからなすぎて回答不能。
こういう質問が出るということはスレッドが何かわかっていない証拠。
掲示板のスペースで解説できる分量ぢゃないので俺はパスさせていただく。

編集 削除
MenPin  2010-05-20 11:23:11  No: 71632  IP: 192.*.*.*

回答ありがとうございます。ちと無謀かなと自分でも思います。
作りたいと思ったものでないと何かモチベーションが沸かないのですよ。
しかし、何でもかんでも質問していたらきりがなさそうなレベルだとも思います。
なので現在開発しているソリューション内部に疑問を検証するような
テストプロジェクトを作りながら進めて行こうかなと思いました。
ルータやファイアーウォールの設定なら某MXとかネットワークアプリで
設定したことがあります。(ポートに穴あけとか
DDNSについてはとりあえず保留して、アドレス指定は"127.0.0.1"で
サーバーもクライアントもローカルマシン内で動かしてみようと思います。
ローカル内で動かしてテストの検証になるのかどうかは疑問ですが。。。
(特に64ソケット問題とか)

編集 削除
どら  2010-05-28 11:41:41  No: 71633  IP: 192.*.*.*

私もここでたくさんお世話になったものですが、一気にやろうとすると混乱す
る一方で、答えてくださる側に言いたいことがうまく伝わらなくなったりもし
ます。

tetrapodさんの言うとおり、スレッドを理解していないと、根本的に何もでき
ないのではないかな〜と・・・

1.まずはスレッドを作成して、何でもいいのでスレッドの処理を行うプログラ
  ムを作成する

2.tetorapodさんの言っている「1:1通信」プログラムを作成してみる

3.2をスレッド内で実行させる

のように、一つずつ問題をクリアしていくのが近道だと思います(その中でわ
からないことがあればまたこちらにお世話になって・・・といった感じです
ね)。

スレッドについて理解していれば「1スレッド64ソケット」の意味も自然に理
解できるかと思われます。

編集 削除
MenPin  2010-05-28 21:35:53  No: 71634  IP: 192.*.*.*

助言ありがとうございます。
やっぱそうですよね、少しずつやってみます。
小さなことからこつこつと、ですね!
頑張ります^^

編集 削除