回答編集履歴

1

誤記修正、加筆

2016/07/02 13:32

投稿

cateye
cateye

スコア6851

test CHANGED
@@ -1 +1,19 @@
1
- まず11で実装してみましょう。その際、複数クライアントに対応する下準備として、送受信部分は別々に設計/実装したほうがいいでしょう。また、複数のクライアントに対応させるには、スレッドなりプロセスを起こす必要があると思うので、スレッド(プロセス)間でのデータの受け渡し方法等を考えたうえで、いつでも切り離せるようにしておきましょう。
1
+ まず11で実装してみましょう。その際、複数クライアントに対応する下準備として、送受信部分は別々に設計/実装したほうがいいでしょう。また、複数のクライアントに対応させるには、スレッドなりプロセスを起こす必要があると思うので、スレッド(プロセス)間でのデータの受け渡し方法等を考えたうえで、いつでも切り離せるようにしておきましょう。
2
+
3
+ 「加筆」
4
+
5
+ 通信そのものを確立するのも大事ですが・・・”切り離せるように”というのは以下のようなことに対応しやすいようにという事です。
6
+
7
+ ・受信部は一か所で着信があったら、そのクライアント用のスレッドを起こす。(これも、データを受信して結果を送信するだけなのか、それともクライアントが切断するまでなのか?)
8
+
9
+ ・応答部は送信するデータがあったらクライアントに送信する。(A,B,Cと3人のユーザがいる場合Aさんが入力したデータを受信したサーバはすべてのクライアント(B,C)に送るのか?・・・この方が楽w)
10
+
11
+ ・送受信の排他制御はどうするか? (送受信ともキュー管理が必要と思われるので、キューの読み書き時に排他制御が必要です。・・・チャット・クライアントであれば、ユーザが入力中にデータを受信したらどうするか?)
12
+
13
+  とか、いろいろ考えることがありますね?・・・他の方も書かれていますが、1対多の通信の場合スレッド同士の排他制御がどうしても必要になります。とりあえず思いついたことなので話がごちゃ混ぜになってしまいますが・・・
14
+
15
+ 送信データが発生したら送信キューに入れる。送信スレッド(?)は送信キューにデータがあったらそれを送信する。
16
+
17
+ 受信部はデータを受信したら受信キューに入れる。受信データの処理をするスレッドは、受信キューにデータがあったらそれを取り出して処理をする。
18
+
19
+ ・・・というような処理になると思います。