我正在与硬件设备建立客户端套接字连接。我正在向此连接发送一个由硬件处理的命令。现在作为确认或回复,硬件发送响应。应用程序在 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
}
任何人都可以建议如何将响应与请求的同步实现为像腻子这样的机制?