私と私の同僚の1人は、AndroidとiPhoneアプリケーション間の単純なソケット通信に取り組んでいます。これまでに達成したことは、別のスレッドでバイト配列を彼に送信し、サービスでバイト配列を受信できることです。しかし、私たちが直面している問題は、彼がソケットを閉じないと、彼が送信しているメッセージ全体を読むことができないということです。しかし、私はそのソケットが生きている必要があるので、データに問題がなかった場合や問題が発生した場合に、彼に応答を送信できます。これが私が彼のメッセージについて聞いている方法です:
thread = new Thread(new Runnable() {
public void run() {
try {
serverSocket = new ServerSocket(5000);
while(state){
client = serverSocket.accept();
client.setKeepAlive(true);
// LOGS
Log.d("","receivedBufferSize : "+serverSocket.getReceiveBufferSize());
Log.d("","is connected : "+client.isConnected());
Log.d("","port : "+client.getPort());
Log.d("","ipadress : "+client.getInetAddress().toString());
InputStream is = client.getInputStream();
Log.d("","is Size : "+is.available());
byte[] bytes = toByteArray(is);
for(int i=0;i<bytes.length;i++){
Log.d("","bytes["+i+"] : "+bytes[i]);
}
}
serverSocket.close();
Log.d("","client socket : "+client.isClosed() + " serverSocket : "+serverSocket.isClosed());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
したがって、彼がアプリケーションを閉じないか、ソケットを閉じない場合、私はそのログメッセージに座っています:Log.d("","is Size : "+is.available());
そして実際には何も起こりません。彼がソケットを閉じた後、受信したバイト配列のバイトを見ることができます。
私が間違っていることや、これを引き起こす可能性のある提案/ヘルプについて何か考えはありますか?
前もって感謝します!