[解決済み] java.io.StreamCorruptedException: 無効なストリームヘッダです。54657374
2022-01-28 11:14:29
質問
Socketプログラムを使って、クライアントから送信された文字列を読み取ろうとしています。
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();
}
}
しかし、クライアントから文字列を読み込む際に、以下のようなエラーが発生します。
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)
検索してみましたが、バグが見つかりませんでした。助けてください。
解決方法を教えてください。
を使用してデータを送信していないことは明らかです。
ObjectOutputStream:
バイトを書き込むだけです。
-
で読み込むと
readObject()
で書き込む必要があります。writeObject().
-
で読む場合は
readUTF()
で書き込む必要があります。writeUTF().
-
で読む場合は
readXXX()
で書き込む必要があります。writeXXX(),
は、ほとんどのXXXの値で使用できます。
関連
-
[解決済み】エラー:'if'のない'else'エラー
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み】フォルダに書き込もうとすると「java.nio.file.AccessDeniedException」が発生する件
-
[解決済み] Java 8 StreamをArrayに変換する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】ResultSetの例外 - 結果セットの開始前
-
[解決済み】Javaクラスの "型に解決できない"
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み】Java LinkedListでNodesを使用する
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】javaで無効な文字定数