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