-1

状況は次のとおりです。ServerSocket ss があり、「ソケット ソケット = ss.accept();」の場合、次のようにします。

istream = socket.getInputStream();
ostream = socket.getOutputStream();   
in = new BufferedReader(new InputStreamReader(istream));
out = new PrintWriter(new BufferedOutputStream(ostream));
/*
  I use in/out few times
  everything OK

*/
ObjectOutputStream oos = new ObjectOutputStream(ostream);
oos.writeObject(someobject);
/* probably code that solves the problem */
String line = in.readLine();

クライアント側には、次のコードがあります。

PrintWriter out = new PrintWriter(new BufferedOutputStream(socket.getOutputStream()),true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
/*
    using in/out, no problems
*/
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
SomeObject so = (SomeObject)ois.readObject();
out.println("some text");

何かオブジェクトを送るまでは、すべて問題ありません。クライアントはオブジェクトを適切に受け取ります。問題はありません。しかし、私はもうソケットを使用することはできません。oos.close() を実行すると、「ソケットが閉じられました」という例外が発生します。oos.reset() を実行すると、同様のメッセージで例外が発生します。「ソケットリセット」。それで、私は何をすべきですか?writeObject() の後で同じ入力ストリームと出力ストリームを使用することは可能ですか?

「何らかのテキスト」を送信すると何が起こるかというと、readLine() を何度呼び出しても null が返されるだけで、その「何らかのテキスト」を取得することはありません。

4

1 に答える 1