2016-08-25 2 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

(までそれがバッファサイズです)

バイナリオブジェクトとしては問題があります。

より簡単な解決策は、1つのストリームタイプに固執することです。あなたがオブジェクトストリームを必要とするので、終わりから終わりまでそれを使用してください。この混乱はありません。

java.io.StreamCorruptedException:無効なストリームヘッダ:FAD080

これは、オブジェクトストリームは、それがデータのいくつかの部分を読んでいるいくつかのデータを読み取ろうとするときにスキャナがそうオブジェクトストリームヘッダを消費したことを意味はるかにストリームの下に。

+0

問題が解決しました。ご意見ありがとうございます。 – Shahzaib

関連する問題