ハードウェア デバイスとのクライアント ソケット接続を行っています。ハードウェアによって処理されるように、この接続にコマンドを送信しています。ここで、確認または応答として、ハードウェアが応答を送信します。アプリケーションは、たとえば 10 秒で定期的にコマンドを接続に送信します。
現在、応答がアプリケーションから送信されたコマンドと同期されないというランダムな問題が存在します。これはハードウェア固有のものと考えていましたが、驚いたことに、同じポートで同じハードウェアにパテを接続して応答を見ると、応答が常に同期されていることがわかります。これは、リクエストをレスポンスにマッピングするためにいくつかの基準を使用する内部のパテのように見えます。
以下は、ハードウェア デバイスにコマンドを送信するために使用しているプログラミング手順です。
Socket clientSocket = new Socket(<IPADDRESS>, 4001);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
while (true) {
try {
//Get command randomly from array enums for test
Random r = new Random();
Commands[] array = Commands.values();
String command = (String) array[r
.nextInt(Commands.values().length)].getCommand();
outToServer.writeBytes(command);
Thread.sleep(500);
while (!inFromServer.ready()) {
}
System.out.println("COMMAND "+command+", SERVER RESPONSE: "
+ inFromServer.readLine());
Thread.sleep(1500);
} catch (SocketTimeoutException se) {
//Handle Exception
} catch (SocketException se) {
//Handle Exception
}
パテのようなメカニズムとして、リクエストとレスポンスの同期をどのように達成できるかアドバイスをいただけますか?