私の現在の状況はかなり有線です。一方のAndroidアプリでネットワークスレッドを使用してサービスを実行しています。
反対側では、私のラップトップ(win8)で実行されているJavaアプリケーション。Javaアプリはサーバーソケットでリッスンしており、Androidアプリがそれと通信するのを待っています。Androidアプリがソケットを作成して正しいポートにバインドし、Javaアプリでサーバーソケットをアドレス指定したら、それを受け入れて新しいソケットを作成します。
この新しいソケットは、Androidアプリ(クライアント)からのパケットを待機しています。Androidアプリは、シリアル化可能なオブジェクトを送信します。
問題は、Javaアプリがそれを読み取らないことですが、wiresharkでスニッフィングし、パケットが受信されています。
だから私はバイト配列を読み取ろうとしましたが、うまくいきました。ソケットは問題なくそれを読み取りました。
これについて何か推測が起こっていますか?私のコードは良いと思います、それはかなり基本的なものです、そして私はアンドロイドアプリの間でそれを数回しました、なぜ今機能していないのか分かりません。
サーバー(Javaアプリ)
mServerSocket = new ServerSocket(port);
mReceivedSocket = new Socket();
mReceivedSocket = mServerSocket.accept();
System.out.println("Accepted");
mInput = new ObjectInputStream(mReceivedSocket.getInputStream());
mOutput = new ObjectOutputStream(mReceivedSocket.getOutputStream());
byte[] buf = new byte[4096];
while (mReceivedSocket.isConnected()) {
System.out.println("Waiting for packets");
mInput.read(buf, 0, 4096);
//NotificationPacket packet = (NotificationPacket) mInput.readObject();
System.out.println("Packet received: "+buf.toString());
//renderPacket(packet);
}
クライアント送信(Androidアプリ)
mOutput.writeObject(packet);
mOutput.flush();
シリアル化可能なパケットは、両側で同じです。
ありがとう。