質問するログイン新規登録

質問編集履歴

1

各装置のフローを追記

2018/10/28 05:09

投稿

dem0nmichik0
dem0nmichik0

スコア37

title CHANGED
File without changes
body CHANGED
@@ -21,14 +21,46 @@
21
21
  改修前:サーバPC(シミュレータ6個起動)-----クライアントPC
22
22
  改修後:サーバPC(シミュレータ6個起動)-----クライアントPC兼サーバPC-----クライアントPC2
23
23
                                     |--クライアントPC3
24
+
25
+ 【各装置のフロー制御】
26
+ ソースコードを全て覚えていないので簡単なフローを記載します.
27
+ 「クライアントPC兼サーバPCの受信側(A.exe)」
28
+ 1.各シミュレータ装置分だけスレッドを生成する.
29
+ 2.スレッド内で下記3~7を実行する.
30
+ 3.socketでシミュレータとソケットを生成する.
31
+ 4.selectで指定時間,各ソケットを監視.
32
+ 5.connectでシミュレータのソケットと接続.
33
+ 6.シミュレータから送信される情報をrecvで受信.
34
+ 7.受信した情報の整合性を判定して正常の場合,受信情報を画面表示.
35
+
36
+ 「クライアントPC兼サーバPCの送信側(Server.exe)」
37
+ 1.各クライアントPCに対してスレッドを生成する.
38
+ 2.スレッド内で下記を実行する.
39
+ 3.socketでクライアントPCとソケットを生成する.
40
+ 4.bindでIPアドレスとポートをソケットにバインド
41
+ 5.listenで接続準備.
42
+ 6.acceptで接続受信待ち.
43
+ 7.selectで指定時間,ソケットを監視.
44
+ 8.for文で6回,シミュレータから受信した情報を送信する(send).
45
+
46
+ 「クライアントPCの受信側(Client.exe)」
47
+ 1.各サーバPCに対してスレッドを生成する.
48
+ 2.スレッド内で下記3~7を実行する.
49
+ 3.socketでシミュレータとソケットを生成する.
50
+ 4.selectで指定時間,ソケットを監視.
51
+ 5.connectでシミュレータのソケットと接続.
52
+ 6.サーバPCから送信される情報をrecvで受信.
53
+ 7.受信した情報の整合性を判定して正常の場合,受信情報を画面表示.
54
+
24
55
  【試したこと】
25
56
  1.各装置のソケット状況を「netstat -abop tcp」で確認したところ,最初はシミュレータ6個分のソケットがESTABLISHEDなのですが,突然ソケットが切れた後,再び確認してみると,シミュレータがLISTENING,クライアントPCがSYN_SENTで,ソケットの接続待ちと要求はしていることは確認しました.なのですが,赤●(接続異常)になったシミュレータが接続正常にならない.
26
57
  2.クライアントPC2とクライアントPC3でブザーが鳴動した時にソケット状況を「netstat -abop tcp」で確認したところ,SYN_SENTでクライアントPC兼サーバpcがLISTENINGでソケットの接続待ちと要求はしていることは確認しました.
27
58
 
28
59
  【各装置の補足情報】
29
- シミュレータ(機能):画面表示PC(クライアントPC)に画面情報を送信する.画面表示PCからはアンサー情報を受信する.画面情報の送信およびアンサー情報の受信が成功の場合,シミュレータ画面上に接続成功を示す緑●(接続成功),画面情報の送信またはアンサー情報の受信が失敗の場合,赤●(接続失敗)を表示する.
30
- クライアントPC兼サーバPC(機能):シミュレータから情報を受信し画面表示する.受信した情報が正常ならば,アンサー情報をシミュレータに送信する.シミュレータから情報を受信している間,クライアントPCにシミュレータから受信した情報を送信する.
31
- クライアントPC(機能):クライアントPC兼サーバPC(機能)が送信する情報を受信して,受信情報が正常ならば画面表示する.
60
+ シミュレータ(機能):画面表示PC(クライアントPC)に画面情報を送信する.画面表示PCからはアンサー情報を受信する.画面情報の送信およびアンサー情報の受信が成功の場合,シミュレータ画面上に接続成功を示す緑●(接続成功),画面情報の送信またはアンサー情報の受信が失敗の場合,赤●(接続失敗)を表示する.
61
+ クライアントPC兼サーバPC(機能):シミュレータから情報を受信し画面表示する.受信した情報が正常ならば,アンサー情報をシミュレータに送信する.シミュレータから情報を受信している間,クライアントPCにシミュレータから受信した情報を送信する.
62
+ クライアントPC(機能):クライアントPC兼サーバPC(機能)が送信する情報を受信して,受信情報が正常ならば画面表示する.
63
+  クライアントPC兼サーバPCとクライアントPCは,同じソフトで,iniファイルで起動するタスクを分けています.タスクは全部で4つ(Main.exeとA.exe,Server.exe,Client.exe)あり,クライアントPC兼サーバPCのときは,Main.exe(画面表示用)とA.exe(シミュレータからの受信用),Server.exe(クライアントPCに送信用)が起動する.クライアントPCのときはMain.exe(画面表示用)とClient.exe(クライアントPC兼サーバPCからの受信用)が起動します.
32
64
 
33
65
  【開発環境】
34
66
  OS:Windows7 32bit