我需要从服务器上读取一些数据,我可以通过终端获取它们,现在我需要自动化。基本上我需要发送命令(红色)和读取响应(黄色)。
据我所知,我可以解决使用套接字的任务。我实现了一个使用socket的类(见下文)
连接很好。
Socket clientSocket = new Socket(endpoint, port);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
然后我发出这样的命令:
out.println(msg); // msg = "Gstatus\r\n"
之后,我希望bufferreader有一些数据要读取
int letter;
while(in.ready() && (letter = in.read()) != -1) {
char c = (char) letter;
res += c;
}
但是res总是空的。
你能告诉我我做错了什么吗?或者纠正我的方向。
谢谢。
1条答案
按热度按时间64jmpszr1#
我是用
DataInputStream
以及DataOutputStream
这样地:服务器.java:
客户端.java:
当服务器运行时,客户机可以使用其
DataOutputStream
. 之后,服务器可以使用该命令:服务器使用
DataInputStream
然后它把它传递到Runtime.getRuntime().exec(command)
方法。这种方法有其独特的优点inputStream
你以后可以从中阅读process
并写入服务器的DataOutputStream
,它将命令行内容发送到客户端套接字。之后,您可以使用客户端的DataInputStream
.