私が書いているJavaサーバーがあり、サーバーはクライアントからコマンドを読み取ります。
C#で記述されたクライアントは、json文字列の形式でソケットを介してコマンドを送信します。コマンドは次のようになります
{
"command": "blah",
"key1": "value1",
"key2": "value3",
"key3": "value4",
}
json文字列は毎回異なる数のキーと値のペアを持つ可能性があるため、jsonコマンドの行数を測定するための静的なカウントはありません。
これがC#クライアントがjson文字列をJavaサーバーに送信する方法です
String json = JsonConvert.SerializeObject(map, Formatting.Indented);
streamWriter.WriteLine(json);
streamWriter.Flush();
アンドロイドで書かれたJavaコードでjsonを読みたいです。以下のようになります。json行を正しく読み取りますが、jsonコマンドの最後の行を読み取った後にブロックされます。コマンドが終了したことを知るための適切な方法がわかりません。
serverSocket = new ServerSocket(4444);
clientSocket = serverSocket.accept();
InputStream inStream = clientSocket.getInputStream();
InputStreamReader inStreamReader = new InputStreamReader(inStream);
BufferedReader buffReader = new BufferedReader(inStreamReader );
String input = "";
while((input = buffReader.readLine())!= null)
{
command += input;
}
//Does not get to this point, blocks above on the readLine after reading full json..
JSONObject jsObj = new JSONObject(input);
Object ovj = jsObj.get("command");
jsonを送信する前に何行も送信して、whileループでそれを何度も読み取ることができるかもしれません。しかし、それは汚い解決策のように見えます。それを行う正しい方法を教えてください。
ありがとう、アーメド