我正在编写一个Java代码,它必须向电子系统发送一些数据并通过无线从电子系统接收一些数据。电子系统由PIC32和RN-171模块组成。我现在尝试连接到 RN-171 网络并发送和接收一些数据。虽然我可以在我的 java 代码中设置一个 OutputStream 并将一些数据正确发送到 RN-171,但我无法设置 InputStream 并且我的应用程序启动以下异常:
java.io.StreamCorruptedException: invalid stream header: 2A48454C
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:804)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
at TestController.sendParametersToWirelessModule(TestController.java:44)
at TestController.main(TestController.java:30)
我的java应用程序中生成异常的代码是:
try{
//1. creating a socket to connect to the server
requestSocket = new Socket("1.2.3.4", 2000);
System.out.println("Connected to localhost in port 2004");
//2. get Input and Output streams
out = new ObjectOutputStream(requestSocket.getOutputStream());
out.flush();
--> in = new ObjectInputStream(requestSocket.getInputStream());
//3: Communicating with the server
sendMessage(message); }
(箭头表示产生异常的代码行)
有解决办法吗?
请使用以下代码:
out = requestSocket.getOutputStream();
in = requestSocket.getInputStream();
ObjectOutputStream/ObjectInputStream 用于序列化/反序列化 Java 对象。在写入之前刷新输出流也是没有意义的。