我正在构建一个中间件,我需要不断阅读设备中发生的事情,所以我构建了这个类:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
/**
*
* @author Valter
*/
public class Middleware {
public static void main(String args[]) {
try {
// ip and port where is my device
Socket socket = new Socket("192.168.1.4", 2001);
DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
// i need send this parameter to my device
dataOutputStream.writeUTF("}Rv!");
String answer = dataInputStream.readUTF();
System.out.println("Answer:"+answer);
dataInputStream.close();
dataOutputStream.close();
socket.close();
} catch (UnknownHostException ex) {
System.out.println("UNKNOW HOST EXCEPTION");
} catch (IOException ex) {
System.out.println(" IOEXCEPTION");
System.out.println(ex.getMessage());
}
}
}
输出:
IOEXCEPTION连接重置
我班上有什么问题?
答案 0 :(得分:1)
我不知道这是否是导致您出现问题的原因,但在尝试从输入流中读取响应之前,您并未刷新输出流。尝试:
dataOutputStream.writeUTF("}Rv!");
dataOutputStream.flush();
答案 1 :(得分:0)
您的设备是否真的理解writeUTF()的输出?并为readUTF()生成正确的输入?检查Javadoc。我认为不太可能。
'连接重置'通常意味着您已写入已被另一端关闭的连接,这已经是应用程序协议错误,并且可能表示先前的应用程序协议错误。