質問編集履歴
1
各装置のフローを追記
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
|
|