ネットワークプログラミング相談室 Port27
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/12/25(土) 22:46:56Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
関連スレ
ネットワークプログラミング雑談
http://hibari.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://hibari.2ch.net/test/read.cgi/tech/1086238859/
0951デフォルトの名無しさん
2012/04/15(日) 23:11:13.18特にXPでは〜、Vistaでは〜、7では〜との注意書きは必ず読みましょう。
読まない人はプログラム書くなと言いたくなるくらい細かい違いが多い。
0952デフォルトの名無しさん
2012/04/15(日) 23:11:39.79今はそこはどうでもいい
0953デフォルトの名無しさん
2012/04/15(日) 23:18:52.51これ本当?どこかにリファレンスがあるなら教えて欲しいな。
例えば、ソケットがread readyになって起こされたスレッドがreadしなかった
場合とかどうなるの?
0954デフォルトの名無しさん
2012/04/15(日) 23:25:42.660955デフォルトの名無しさん
2012/04/15(日) 23:35:15.90「何もない」があるのよ!
epollとかでエッジトリガとかだと何もしないがゆえに
問題になることはあるかも
0956デフォルトの名無しさん
2012/04/15(日) 23:44:57.62理解できないです。
select/pollはレベルトリガですよね?
起こされたスレッドがreadしないでsleepしたら同じsocketでselectしている
別のスレッドが起きない?
0957デフォルトの名無しさん
2012/04/15(日) 23:45:51.97それでいいだろ
Aのスレッドでなにも怒らないからBのスレッドで怒り爆発だろ
0958デフォルトの名無しさん
2012/04/16(月) 14:16:21.100959デフォルトの名無しさん
2012/04/16(月) 15:25:23.722ちゃんねるは世界の全てではない。
0960デフォルトの名無しさん
2012/04/16(月) 16:11:19.98unixでCPUコアが4つあって
1000人までクライアントを待ち受ける場合
・スレッドを4つ作る
・各スレッドでselect()をする
ってことですか?
その場合、各スレッド250人までをどうやって割り振ればいいんでしょうか?
均等に割り振る事ができるんでしょうか?
0961デフォルトの名無しさん
2012/04/16(月) 16:17:40.24んじゃ、バシッと常套手段教えてやれよ
0962デフォルトの名無しさん
2012/04/16(月) 16:19:44.02スレッドを作らなくてもいい。
振り分けは適当でいい。
全部スレッドでもいい。
0963デフォルトの名無しさん
2012/04/16(月) 16:24:25.45最大せっちゃん数を
上回ってればどうでもいい
0964デフォルトの名無しさん
2012/04/16(月) 16:24:50.62> 1000人までクライアントを待ち受ける場合
処理する内容を詳しく言わないとわからない。
スレッド数、ジョブの回し方は処理する内容に依存する。
0965デフォルトの名無しさん
2012/04/16(月) 18:51:41.921000人までのロビーがありゲームする部屋が10あるとします。
4人集まったらゲーム開始、サーバではゲームの進行やカードを配ったり
といった処理もさせます。
こんな感じのことをしたいのですが、どうでしょうか?
0966デフォルトの名無しさん
2012/04/16(月) 19:54:42.640967876
2012/04/16(月) 22:49:16.49OSがUnix系なら、Windowsに関する話は参考にならないよ。
>3 先頭のリチャードスティーブンスの本を、超おすすめする。
お前の人生上絶対、もととれる。
参考までに、俺なら
・4プロセス。
・各プロセスは別ポート番号。全く別のマシンであるかのように設計。
・1プロセスは1スレッド。
・長いトランザクションで1クラがサーバを占有しないよう
トランザクションを中断・再開できる工夫をする。
で組む。
マジレスだが、プロトタイプを各方式で作って実測し、
本チャンの方式を決定するのが王道だぞ。どんな案件でも、
方式設計でプロトの実測値がないと空中戦(机上の空論ばかりで
結論が出ない)になる。
「均等に割り振ることができるんでしょうか?」じゃねぇよ
アプリの特性を考慮してお前がそれを考えて、比較して、決定するの。
そんなレベルで1000人とか言ってないで
まず250人処理できる1個のサーバを作るほうが先。
0968876
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 してくる、普通じゃないクライアント(ポートスキャナ等)
の対策とか、高度な話はいろいろあるけど、今はそういう話じゃない
から割愛します。
0969デフォルトの名無しさん
2012/04/16(月) 23:24:37.22そう。だからソケットはノンブロックが基本なんだよね。
select使うならなおのことブロッキングにしとく意味がない。
0970デフォルトの名無しさん
2012/04/17(火) 11:08:39.890971デフォルトの名無しさん
2012/04/17(火) 11:14:18.58Windowsは大変だよね
0972デフォルトの名無しさん
2012/04/17(火) 16:16:27.35俺なら、
・部屋数プロセスを起動
・ゲーマごとにスレッド
・その他必要なプロセス(対戦者入り口、割り当てなど)とスレッド(カード配布する親など)。
ポートは、
・入り口 (*1)
・部屋ごと
でacceptして、前者のプロセスから後者のアドレス/ポート番号を聞き、
部屋プロセスとゲーマのクライアントは直接接続を張る。
こんなところから始めてみる。
開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
部屋割り当てロジックは後から作る。
上の構成なら分離されてるので、独立に開発できる。
0973デフォルトの名無しさん
2012/04/17(火) 16:18:02.55workerの仕様次第だから。
0974デフォルトの名無しさん
2012/04/17(火) 17:05:38.130975デフォルトの名無しさん
2012/04/17(火) 17:08:05.210976デフォルトの名無しさん
2012/04/18(水) 08:13:22.36そうだよ。だからどうした。スタートはそこからだ。
それを理由におまいさんがネットプログラムやめてくれても
全く構わないし、「俺がガンダムだ」宣言して
各OS統一できる基本的な枠組みを作ってくれてもいいぞ。
そしたらおっちゃん嬉しくて涙出る。
みんな夢見て挫折した、死屍累々の歴史があるの。
俺はWindowsの64ソケット制限がガンだと思うんだが、
でもその分WinはUnixのAIOより非同期が明後日の方へ進化して
カッケェことになってるしなぁ。
0977デフォルトの名無しさん
2012/04/18(水) 10:43:04.21だからどうしたって、されてないでしょと言ったらされてると主張した奴がいたから、
やっぱりされてないじゃんと言っただけなんだけど
なんか気に障ることでもあんの、おっさん
0978デフォルトの名無しさん
2012/04/18(水) 11:11:24.05なんだ、ただのゆとりかよ
0979デフォルトの名無しさん
2012/04/18(水) 13:46:26.16>開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
スレッド(カード配布する親など)、これはゲーム進行をコントロールしている
スレッドって意味ですか?
それプラス4人の計5つのスレッド構成でやる感じでしょうか?
スレッドを駆使してやる理由を教えて頂いてもいいですか?
select()では駄目でしょうか?
0980デフォルトの名無しさん
2012/04/18(水) 13:58:04.89名前付けて。
無視するから。
0981デフォルトの名無しさん
2012/04/18(水) 14:03:08.690982デフォルトの名無しさん
2012/04/18(水) 14:11:35.38妥当なスレってないのかな。
0983デフォルトの名無しさん
2012/04/18(水) 16:54:52.45次スレよろしく
0984デフォルトの名無しさん
2012/04/18(水) 17:18:10.24たてた。
ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
0985デフォルトの名無しさん
2012/04/18(水) 19:43:45.9264ソケット制限っておっちゃん浦島太郎なのか?
0986デフォルトの名無しさん
2012/04/18(水) 19:53:44.11対ゲーマーのロジックに専念出来るから。
ちなみにマルチスレッド構成と、
selectは共存しうる。
1スレッドが複数の(I/O)イベントを対象いすることがありうるから。
0987デフォルトの名無しさん
2012/04/18(水) 20:15:00.170988デフォルトの名無しさん
2012/04/18(水) 21:30:51.25ありがとうございます。勉強になりました。
979を指針にして作成してみようと思います。
0989デフォルトの名無しさん
2012/04/18(水) 21:33:29.51作るのはスレッドにしてしまったほうが楽だが。
0990デフォルトの名無しさん
2012/04/18(水) 21:33:36.00間違いました。972でした。
ありがとうございました。
0991デフォルトの名無しさん
2012/04/18(水) 22:08:47.58おつうめ
0992デフォルトの名無しさん
2012/04/19(木) 04:15:54.520993デフォルトの名無しさん
2012/04/19(木) 13:24:31.35ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
0994デフォルトの名無しさん
2012/04/19(木) 15:13:02.590995デフォルトの名無しさん
2012/04/19(木) 20:39:50.890996デフォルトの名無しさん
2012/04/19(木) 20:59:14.790997デフォルトの名無しさん
2012/04/20(金) 07:27:18.020998デフォルトの名無しさん
2012/04/20(金) 11:26:16.880999デフォルトの名無しさん
2012/04/20(金) 11:26:33.361000デフォルトの名無しさん
2012/04/20(金) 11:26:48.95ダー
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。