java.io.StreamCorruptedException:无效的流标题:54657374 [英] java.io.StreamCorruptedException: invalid stream header: 54657374

查看:237
本文介绍了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 with writeObject().
  • If you read with readUTF() you must write with writeUTF().
  • If you read with readXXX() you must write with writeXXX(), for most values of XXX.

这篇关于java.io.StreamCorruptedException:无效的流标题:54657374的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆