• 締切済み

パイプでバイト転送

パイプを使ってデータの受け渡しをしているのですが、うまくいきません。 書き込むほうでは、はじめ4バイトにデータサイズを。後にデータを書き込みます。 読み込むほうでは、はじめ4バイトを読み込んでデータサイズを。後はデータサイズ分を読み込む。 以下のソースで、どこかいけないところはありますか? #コメントのところは省略している部分です。 #コメントの処理を行っています。 ---ここから--- Pipe pipe; SourceChannel sourceChannel = pipe.source(); sourceChannel.configureBlocking(false); SinkChannel sinkChannel = pipe.sink(); byte[] b = new byte[4]; b[0] = (byte)((msg >>> 24) & 0xFF); b[1] = (byte)((msg >>> 16) & 0xFF); b[2] = (byte)((msg >>> 8) & 0xFF); b[3] = (byte)((msg >>> 0) & 0xFF); // bの後ろに転送文字列を結合 b += "hogehogehoge".getBytes(); // 書き込み専用チャネルからストリームを作成 OutputStream out = getOutputStream(sinkChannel); // 入力専用チャネルからストリームを作成 DataInputStream in = new DataInputStream(getInputStream(sourceChannel)); int size = (int)in.readInt(); byte[] buf = new byte[size]; int len = in.read(buf, 0, size); ---ここまで--- 実行結果、チャネルでEOF例外が発生しました。 java.io.EOFException at java.io.DataInputStream.readInt(Unknown Source) at jp.okwave.search.community.process.UpdateDataTransferThread.readAction(UpdateDataTransferThread.java:255) at jp.okwave.search.community.communicate.thread.ClientThread.run(ClientThread.java:241) at java.lang.Thread.run(Unknown Source) なぜでしょうか。。 よろしくお願いします。

みんなの回答

回答No.1

関連するQ&A