私はサーバー(java) - クライアント(Android/Java)アプリケーションをプログラミングしています。サーバーはW7です。すべての通信は、クライアントで2回以上送信するまで、データのフリーズと読み取りを停止する1回の読み取りまでうまくいっています。Javaソケットがデータを読み取っていない
読み取られないデータはバイト配列です。私はこの点まで、すべてのコミュニケーションがうまくいくことを繰り返す。
Long lLength = new Long(length);
byte [] bLength = this.longToBytes(lLength.longValue());
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
dos.write(bLength);
dos.flush();
このコードは8つのバイト配列にlong値を変換:
は、ここで私は、データを送信するために使用したコードです。私が言ったように、最初の書き込みが実行されたとき(そしてクライアントがデータを待っているとき)、読み込みは行われません。私は最後のwrite()を実行するまでは実行されません。そして、ここではそれを読むためのコードです:私は、トラフィックを盗聴するためにWiresharkのを使用しました
byte length[] = {0,0,0,0,0,0,0,0};
dis.read(length);
、と私はバイト配列が送信されていることがわかりますし、ACKとのクライアントの答えが、読み込みは行われません。
Here私はwiresharkで行ったキャプチャをアップロードしました。プロトコルデータのみ。クライアントとサーバーで
は、ソケットは次のように設定されている:これは私が怒っ駆動さsocket = new Socket(sIP, oiPort.intValue());
dos = new DataOutputStream(socket.getOutputStream());
dis = new DataInputStream(socket.getInputStream());
1つの時点で、アプリケーションがデータを読み取りを停止、なぜ、私は知りません私はいつもと同じ方法でそれを送ります。
は私もテストしてきたと言う...
は、私はこの問題は、クライアントソケットの入力バッファであってもよいこととし...しかし、私は何をするか、何をしようとするのか分かりませんサーバーはWXPSP3で動作し、それでも動作しません。
ありがとう、
Newlog
こんにちは、スティーブン。私はあなたが言ったことすべてをチェックしました。 Wiresharkでは、私は8バイトが送信されていることがわかります。書き込みとして、クライアントはデータを読み込まなかったので、私はwriteLongを使用しません。 (最初はwriteLongでした)。 – newlog