2016-08-25 41 views
0

我想通过套接字发送一些数据。前3个数据项发送成功,但是当我尝试发送双数组时,则抛出异常。 让我们来代码: 客户端:java.io.StreamCorruptedException:无效的流标头:FAD08000

Socket clisock=new Socket("127.0.0.1",1341); 
    Scanner sc1=new Scanner(clisock.getInputStream()); 
    PrintStream p=new PrintStream(clisock.getOutputStream()); 
    p.println(num_doc); 
    p.flush(); 

    p.println(TD);  
    p.flush(); 

    p.println(num_Decimal);  
    p.flush(); 
    ObjectOutputStream os=new ObjectOutputStream(clisock.getOutputStream()); 
    os.writeObject(server_index); 

服务器端:

int number; 
    long keyword, keywords; 
    double[][] server_ind; 
    ServerSocket s1=new ServerSocket(1341); 
    Socket ss=s1.accept(); 
    Scanner sc=new Scanner(ss.getInputStream()); 
    number=sc.nextInt(); 

    keyword=sc.nextLong(); 

    keywords=sc.nextLong(); 

    ObjectInputStream is = new ObjectInputStream(ss.getInputStream()); 
    server_ind=(double[][])is.readObject(); 

异常:java.io.StreamCorruptedException:无效的流头:FAD08000

注意:在此发布问题,我已经寻找类似的例外,但并没有成功地取消例外。

回答

1

扫描仪被缓冲,从而可将读取尽可能多的内存(最高到它的缓冲区大小)

这意味着,如果你不是故意的扫描器读取所有的数据和读取,而不是它的一些作为一个二元对象,你有一个问题。

更简单的解决方案是坚持一种流类型。由于您需要Object流,因此只需使用它,不会产生混淆。

java.io.StreamCorruptedException:无效流报头:FAD080

这意味着扫描仪时的对象流试图读取一些数据则读出某些数据块的已消耗的对象流报头,以便更远的地方。

+0

问题已解决。谢谢你的评论。 – Shahzaib

相关问题