質問編集履歴

1

各装置のフローを追記

2018/10/28 05:09

投稿

dem0nmichik0
dem0nmichik0

スコア37

test CHANGED
File without changes
test CHANGED
@@ -44,6 +44,68 @@
44
44
 
45
45
                                     |--クライアントPC3
46
46
 
47
+
48
+
49
+ 【各装置のフロー制御】
50
+
51
+ ソースコードを全て覚えていないので簡単なフローを記載します.
52
+
53
+ 「クライアントPC兼サーバPCの受信側(A.exe)」
54
+
55
+ 1.各シミュレータ装置分だけスレッドを生成する.
56
+
57
+ 2.スレッド内で下記3~7を実行する.
58
+
59
+ 3.socketでシミュレータとソケットを生成する.
60
+
61
+ 4.selectで指定時間,各ソケットを監視.
62
+
63
+ 5.connectでシミュレータのソケットと接続.
64
+
65
+ 6.シミュレータから送信される情報をrecvで受信.
66
+
67
+ 7.受信した情報の整合性を判定して正常の場合,受信情報を画面表示.
68
+
69
+
70
+
71
+ 「クライアントPC兼サーバPCの送信側(Server.exe)」
72
+
73
+ 1.各クライアントPCに対してスレッドを生成する.
74
+
75
+ 2.スレッド内で下記を実行する.
76
+
77
+ 3.socketでクライアントPCとソケットを生成する.
78
+
79
+ 4.bindでIPアドレスとポートをソケットにバインド
80
+
81
+ 5.listenで接続準備.
82
+
83
+ 6.acceptで接続受信待ち.
84
+
85
+ 7.selectで指定時間,ソケットを監視.
86
+
87
+ 8.for文で6回,シミュレータから受信した情報を送信する(send).
88
+
89
+
90
+
91
+ 「クライアントPCの受信側(Client.exe)」
92
+
93
+ 1.各サーバPCに対してスレッドを生成する.
94
+
95
+ 2.スレッド内で下記3~7を実行する.
96
+
97
+ 3.socketでシミュレータとソケットを生成する.
98
+
99
+ 4.selectで指定時間,ソケットを監視.
100
+
101
+ 5.connectでシミュレータのソケットと接続.
102
+
103
+ 6.サーバPCから送信される情報をrecvで受信.
104
+
105
+ 7.受信した情報の整合性を判定して正常の場合,受信情報を画面表示.
106
+
107
+
108
+
47
109
  【試したこと】
48
110
 
49
111
  1.各装置のソケット状況を「netstat -abop tcp」で確認したところ,最初はシミュレータ6個分のソケットがESTABLISHEDなのですが,突然ソケットが切れた後,再び確認してみると,シミュレータがLISTENING,クライアントPCがSYN_SENTで,ソケットの接続待ちと要求はしていることは確認しました.なのですが,赤●(接続異常)になったシミュレータが接続正常にならない.
@@ -54,11 +116,13 @@
54
116
 
55
117
  【各装置の補足情報】
56
118
 
57
- シミュレータ(機能):画面表示PC(クライアントPC)に画面情報を送信する.画面表示PCからはアンサー情報を受信する.画面情報の送信およびアンサー情報の受信が成功の場合,シミュレータ画面上に接続成功を示す緑●(接続成功),画面情報の送信またはアンサー情報の受信が失敗の場合,赤●(接続失敗)を表示する.
119
+ シミュレータ(機能):画面表示PC(クライアントPC)に画面情報を送信する.画面表示PCからはアンサー情報を受信する.画面情報の送信およびアンサー情報の受信が成功の場合,シミュレータ画面上に接続成功を示す緑●(接続成功),画面情報の送信またはアンサー情報の受信が失敗の場合,赤●(接続失敗)を表示する.
58
120
 
59
- クライアントPC兼サーバPC(機能):シミュレータから情報を受信し画面表示する.受信した情報が正常ならば,アンサー情報をシミュレータに送信する.シミュレータから情報を受信している間,クライアントPCにシミュレータから受信した情報を送信する.
121
+ クライアントPC兼サーバPC(機能):シミュレータから情報を受信し画面表示する.受信した情報が正常ならば,アンサー情報をシミュレータに送信する.シミュレータから情報を受信している間,クライアントPCにシミュレータから受信した情報を送信する.
60
122
 
61
- クライアントPC(機能):クライアントPC兼サーバPC(機能)が送信する情報を受信して,受信情報が正常ならば画面表示する.
123
+ クライアントPC(機能):クライアントPC兼サーバPC(機能)が送信する情報を受信して,受信情報が正常ならば画面表示する.
124
+
125
+  クライアント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からの受信用)が起動します.
62
126
 
63
127
 
64
128