私はjavaを学んでいて、ソケットに関するいくつかの問題に直面していました。私は、単純なクライアントサーバーアプリケーションを開発 - 種類のノックノック、それは4つのステップを実行します。ソケット、BufferedReader.readline() - ストリームが準備されていないのはなぜですか?
- クライアントは
- サーバーがクライアントに送り返すそれらをrecievesと
- サーバーをファイルに保存し、サーバーにいくつかのメッセージを送信しますいくつかの他のメッセージ
- クライアントがそれらをrecievesとも
問題は、ステップ#4に表示されるファイルに保存します。クライアントは、メッセージを受け取るていないし、ループを取得することはありませんん。
サーバー側のメッセージでtry {
socket = new Socket(ipAddress, 4444);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
が送信されます:中はBufferedReader
のタイプです
while ((inStr = in.readLine()) != null) {
writer.println(inStr);
}
try {
socket = srvSocket.accept();
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
...
out.println("test from server #1");
out.println("test from server #2");
は、クライアント側で私はin.ready()
を見て - falseを返します。サーバ側では、私はout.checkError()
を見る - それは真を返します。
私は間違っていますが、なぜストリームは空ですか?
ヘルプiaが高く評価されました! :)
例外がありますか? – Tudor
行を書いた後に 'out.flush()'を試してください。 – nos
@Sergio:あなたが言っているように、メッセージを送信しているサーバーコードはどこですか? –