[過去ログ]
Javaで作るスタンドアローンゲーム (484レス)
Javaで作るスタンドアローンゲーム http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
358: 名前は開発中のものです。 [sage] 2014/11/23(日) 02:19:06.05 ID:Y/h3FQGO ブロッキングの場合は通信相手1人ごとに受信用スレッド1個と送信用スレッド1個を作って、それに通信処理を全部まかせるのがいい 相手側に何があってもブロックするのはそこだけで済む 何か送信したいときは、その相手用の送信キューに情報を詰め込んで、送信スレッドに送信してもらう 受信の方はそのまま受信スレッド上で処理してもいいが、スレッド間の同期が心配なら、受信した情報をメインスレッドの処理キューに積んでメインスレッドに処理してもらってもいい もちろん各キュー自身は同期しなければならないが、LinkedBlockingQueueでも使っとけば心配なかろう 欠点は通信相手が増えすぎるとスレッドが増えすぎることだが、まぁ100くらいは大丈夫じゃない? ノンブロッキングの場合は一箇所で全ソケットの送受信の面倒を見ることになる 基本的には Selector#select を回し続け、個々のソケットがそれぞれ受信可能になっていれば受信し送信可能になっていれば送信するわけだが、 受信したいときに受信したい量が受信できるとは限らないし、送信したいときに送信したい量が送信できるとも限らないので、 ブロックさせずに1スレッドですべてを回すためには送受信共にバッファ管理が必要になる 相手に何か送信したいときは、その相手用の送信バッファにデータを詰め込んでselectのループに戻り、 ソケットが送信可能な状態になったときに送信できる量ずつ送信する(そしてまたselectのループに戻る) 受信の方も、必要な量のデータが受信バッファに溜まるまでselectのループを回しておき、 じゅうぶん溜まったら受信バッファから必要量のデータを取り出して処理する感じ? 通信相手が増えてもスレッド数を抑えられるのが利点だが、実装は面倒い http://mevius.5ch.net/test/read.cgi/gamedev/1356591858/358
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
1.171s*