java.io.StreamCorruptedException:无效的流标题:54657374 [英] java.io.StreamCorruptedException: invalid stream header: 54657374
本文介绍了java.io.StreamCorruptedException:无效的流标题:54657374的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试读取一个使用Socket程序从客户端发送的字符串,代码如下:
I am trying to read a string which is send from client using Socket program, The code as follows:
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.ClassNotFoundException;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServerExample {
//static ServerSocket variable
private static ServerSocket server;
//socket server port on which it will listen
private static int port = 5000;
public static void main(String args[]) throws IOException, ClassNotFoundException{
//create the socket server object
server = new ServerSocket(port);
//keep listens indefinitely until receives 'exit' call or program terminates
while(true){
System.out.println("Waiting for client request");
//creating socket and waiting for client connection
Socket socket = server.accept();
//read from socket to ObjectInputStream object
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
//convert ObjectInputStream object to String
String message = (String) ois.readObject();
System.out.println("Message Received: " + message);
//create ObjectOutputStream object
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
//write object to Socket
oos.writeObject("Hi Client "+message);
//close resources
ois.close();
oos.close();
socket.close();
//terminate the server if client sends exit request
if(message.equalsIgnoreCase("exit")) break;
}
System.out.println("Shutting down Socket server!!");
//close the ServerSocket object
server.close();
}
}
但我收到的错误如下从客户端读取字符串时:
But I am getting error as follows while reading the string from client:
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 54657374
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:803)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298)
at SocketServerExample.main(SocketServerExample.java:29)
我搜索过但没有管理找到错误。请帮帮我。
I searched and not managed find the bug. Please help me.
推荐答案
显然你不是用 ObjectOutputStream发送数据:
你只是在写字节。
Clearly you aren't sending the data with ObjectOutputStream:
you are just writing the bytes.
- 如果你用
读取readObject()
你必须用writeObject()写。
- 如果你用
读取readUTF()
你必须用writeUTF()写。
- 如果你用
读取readXXX()
您必须使用writeXXX(),
为大多数XXX值编写。
- If you read with
readObject()
you must write withwriteObject().
- If you read with
readUTF()
you must write withwriteUTF().
- If you read with
readXXX()
you must write withwriteXXX(),
for most values of XXX.
这篇关于java.io.StreamCorruptedException:无效的流标题:54657374的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文