ネットワークプログラミング相談室 Port27

このエントリーをはてなブックマークに追加
952デフォルトの名無しさん:2012/04/15(日) 23:11:39.79
>>940
今はそこはどうでもいい
953デフォルトの名無しさん:2012/04/15(日) 23:18:52.51
>>945
これ本当?どこかにリファレンスがあるなら教えて欲しいな。
例えば、ソケットがread readyになって起こされたスレッドがreadしなかった
場合とかどうなるの?
954デフォルトの名無しさん:2012/04/15(日) 23:25:42.66
別に何も起こりませんが?
955デフォルトの名無しさん:2012/04/15(日) 23:35:15.90
>>954
「何もない」があるのよ!

epollとかでエッジトリガとかだと何もしないがゆえに
問題になることはあるかも
956デフォルトの名無しさん:2012/04/15(日) 23:44:57.62
>>954
理解できないです。
select/pollはレベルトリガですよね?
起こされたスレッドがreadしないでsleepしたら同じsocketでselectしている
別のスレッドが起きない?
957デフォルトの名無しさん:2012/04/15(日) 23:45:51.97
>>956
それでいいだろ
Aのスレッドでなにも怒らないからBのスレッドで怒り爆発だろ
958デフォルトの名無しさん:2012/04/16(月) 14:16:21.10
この程度の基本的な枠組みの常套手段すら確立されてないなんて・・・
959デフォルトの名無しさん:2012/04/16(月) 15:25:23.72
されてるってw
2ちゃんねるは世界の全てではない。
960デフォルトの名無しさん:2012/04/16(月) 16:11:19.98
すいません。よくわからないので具体的に教えてもらってもいいですか?
unixでCPUコアが4つあって
1000人までクライアントを待ち受ける場合
・スレッドを4つ作る
・各スレッドでselect()をする
ってことですか?
その場合、各スレッド250人までをどうやって割り振ればいいんでしょうか?
均等に割り振る事ができるんでしょうか?
961デフォルトの名無しさん:2012/04/16(月) 16:17:40.24
>>959
んじゃ、バシッと常套手段教えてやれよ
962デフォルトの名無しさん:2012/04/16(月) 16:19:44.02
別にスレッドは4つである必要は無い。
スレッドを作らなくてもいい。
振り分けは適当でいい。
全部スレッドでもいい。
963デフォルトの名無しさん:2012/04/16(月) 16:24:25.45
ワーカー数と各ワーカーの担当数の積が
最大せっちゃん数を
上回ってればどうでもいい
964デフォルトの名無しさん:2012/04/16(月) 16:24:50.62
>>960
> 1000人までクライアントを待ち受ける場合

処理する内容を詳しく言わないとわからない。
スレッド数、ジョブの回し方は処理する内容に依存する。
965デフォルトの名無しさん:2012/04/16(月) 18:51:41.92
4人対戦のゲームのサーバを想定しています。
1000人までのロビーがありゲームする部屋が10あるとします。
4人集まったらゲーム開始、サーバではゲームの進行やカードを配ったり
といった処理もさせます。
こんな感じのことをしたいのですが、どうでしょうか?
966デフォルトの名無しさん:2012/04/16(月) 19:54:42.64
どうぞご自由に
967876:2012/04/16(月) 22:49:16.49
うむ。どうやっても出来るから、まずは手を動かして作れよ。

OSがUnix系なら、Windowsに関する話は参考にならないよ。
>3 先頭のリチャードスティーブンスの本を、超おすすめする。
お前の人生上絶対、もととれる。

参考までに、俺なら
・4プロセス。
・各プロセスは別ポート番号。全く別のマシンであるかのように設計。
・1プロセスは1スレッド。
・長いトランザクションで1クラがサーバを占有しないよう
トランザクションを中断・再開できる工夫をする。
で組む。

マジレスだが、プロトタイプを各方式で作って実測し、
本チャンの方式を決定するのが王道だぞ。どんな案件でも、
方式設計でプロトの実測値がないと空中戦(机上の空論ばかりで
結論が出ない)になる。

「均等に割り振ることができるんでしょうか?」じゃねぇよ
アプリの特性を考慮してお前がそれを考えて、比較して、決定するの。
そんなレベルで1000人とか言ってないで
まず250人処理できる1個のサーバを作るほうが先。
968876:2012/04/16(月) 22:57:49.50
もし本当に負荷分散を勉強しいなら、「ロードバランサ」製品が
どうやってるかを学んで、そこで振り分け先の「サーバ」を
「プロセス」に置き換えて考えてみやがれ。
参考まで: http://www.networld.co.jp/slb/load_sharing.htm

(俺は、お前さんが今やるべき事は違うと思うけどね)


>877 俺と君は意見が違うようだが、
Unixでselect(epoll等含む)するならブロッキングのままのほうが、
俺の経験上は楽だった(テスト工程とか)。
君がどうつくるのが好きかは君次第だから、君の言葉で語れ。
俺は否定しない。

>879 ソケットはブロッキングモードで、selectすれば
ブロックしないよう作れるよ。"Unixでは"その方が普通。
てかselectってそのためのものだよ。
syn reset してくる、普通じゃないクライアント(ポートスキャナ等)
の対策とか、高度な話はいろいろあるけど、今はそういう話じゃない
から割愛します。
969デフォルトの名無しさん:2012/04/16(月) 23:24:37.22
>>968
そう。だからソケットはノンブロックが基本なんだよね。
select使うならなおのことブロッキングにしとく意味がない。
970デフォルトの名無しさん:2012/04/17(火) 11:08:39.89
やっぱ、この程度の基本的な枠組みの常套手段すら確立されてないじゃんw
971デフォルトの名無しさん:2012/04/17(火) 11:14:18.58
>>970
Windowsは大変だよね
972デフォルトの名無しさん:2012/04/17(火) 16:16:27.35
>>965
俺なら、
・部屋数プロセスを起動
・ゲーマごとにスレッド
・その他必要なプロセス(対戦者入り口、割り当てなど)とスレッド(カード配布する親など)。
ポートは、
・入り口 (*1)
・部屋ごと
でacceptして、前者のプロセスから後者のアドレス/ポート番号を聞き、
部屋プロセスとゲーマのクライアントは直接接続を張る。
こんなところから始めてみる。

開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
部屋割り当てロジックは後から作る。
上の構成なら分離されてるので、独立に開発できる。
973デフォルトの名無しさん:2012/04/17(火) 16:18:02.55
>>970
workerの仕様次第だから。
974デフォルトの名無しさん:2012/04/17(火) 17:05:38.13
つまり、このスレの住人は、workerの仕様もわからないのに自分語りをはじめてしまうお馬鹿さんばっかということだね
975デフォルトの名無しさん:2012/04/17(火) 17:08:05.21
そうだね。質問の直後はひどかったね。
976デフォルトの名無しさん:2012/04/18(水) 08:13:22.36
>970
そうだよ。だからどうした。スタートはそこからだ。

それを理由におまいさんがネットプログラムやめてくれても
全く構わないし、「俺がガンダムだ」宣言して
各OS統一できる基本的な枠組みを作ってくれてもいいぞ。

そしたらおっちゃん嬉しくて涙出る。
みんな夢見て挫折した、死屍累々の歴史があるの。

俺はWindowsの64ソケット制限がガンだと思うんだが、
でもその分WinはUnixのAIOより非同期が明後日の方へ進化して
カッケェことになってるしなぁ。
977デフォルトの名無しさん:2012/04/18(水) 10:43:04.21
>>976
だからどうしたって、されてないでしょと言ったらされてると主張した奴がいたから、
やっぱりされてないじゃんと言っただけなんだけど

なんか気に障ることでもあんの、おっさん
978デフォルトの名無しさん:2012/04/18(水) 11:11:24.05
>>977
なんだ、ただのゆとりかよ
979デフォルトの名無しさん:2012/04/18(水) 13:46:26.16
>>972
>開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
スレッド(カード配布する親など)、これはゲーム進行をコントロールしている
スレッドって意味ですか?
それプラス4人の計5つのスレッド構成でやる感じでしょうか?
スレッドを駆使してやる理由を教えて頂いてもいいですか?
select()では駄目でしょうか?
980デフォルトの名無しさん:2012/04/18(水) 13:58:04.89
>>979
名前付けて。
無視するから。
981デフォルトの名無しさん:2012/04/18(水) 14:03:08.69
やっぱりIDいるよな
982デフォルトの名無しさん:2012/04/18(水) 14:11:35.38
もはやこのスレとは論旨が異なってきてる気がするな。
妥当なスレってないのかな。
983デフォルトの名無しさん:2012/04/18(水) 16:54:52.45
>>980
次スレよろしく
984デフォルトの名無しさん:2012/04/18(水) 17:18:10.24
>>983
たてた。

ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
985デフォルトの名無しさん:2012/04/18(水) 19:43:45.92
>>976
64ソケット制限っておっちゃん浦島太郎なのか?
986デフォルトの名無しさん:2012/04/18(水) 19:53:44.11
>>979
対ゲーマーのロジックに専念出来るから。
ちなみにマルチスレッド構成と、
selectは共存しうる。
1スレッドが複数の(I/O)イベントを対象いすることがありうるから。
987デフォルトの名無しさん:2012/04/18(水) 20:15:00.17
イベントで全部済ますのは作るの楽でいいな
988デフォルトの名無しさん:2012/04/18(水) 21:30:51.25
>>986
ありがとうございます。勉強になりました。
979を指針にして作成してみようと思います。
989デフォルトの名無しさん:2012/04/18(水) 21:33:29.51
>>987
作るのはスレッドにしてしまったほうが楽だが。
990デフォルトの名無しさん:2012/04/18(水) 21:33:36.00
>>988
間違いました。972でした。
ありがとうございました。
991デフォルトの名無しさん:2012/04/18(水) 22:08:47.58
>>984
おつうめ
992デフォルトの名無しさん:2012/04/19(木) 04:15:54.52
うめ
993デフォルトの名無しさん:2012/04/19(木) 13:24:31.35
新スレ誘導&うめてんてー

ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
994デフォルトの名無しさん:2012/04/19(木) 15:13:02.59
うめす
995デフォルトの名無しさん:2012/04/19(木) 20:39:50.89
協力うめ
996デフォルトの名無しさん:2012/04/19(木) 20:59:14.79
佐川梅三郎
997デフォルトの名無しさん:2012/04/20(金) 07:27:18.02
うめ
998デフォルトの名無しさん:2012/04/20(金) 11:26:16.88
1
999デフォルトの名無しさん:2012/04/20(金) 11:26:33.36
2
1000デフォルトの名無しさん:2012/04/20(金) 11:26:48.95
3
ダー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。