Ваша ошибка в том, что вы не проверяете, сколько байтов вернуло чтение, и вы добавляете 0 как часть содержимого строки.
Это следует заменить:
while (!validJson)
{
byte[] inStream = new byte[1024];
stream.Read (inStream, 0, 1024);
string jsonData = System.Text.Encoding.ASCII.GetString (inStream);
jsonMsg = string.Concat (jsonMsg, jsonData);
if (jsonMsg.Contains("}"))
{
validJson = true;
//This part here is executed, but when I print(jsonMsg), it just prints the character "{" which gets transmitted in the first segment
}
}
Это будет правильный код:
while (!validJson)
{
byte[] inStream = new byte[1024];
int bytesRead = stream.Read (inStream, 0, 1024);
string jsonData = System.Text.Encoding.ASCII.GetString (inStream, 0, bytesRead);
jsonMsg = string.Concat (jsonMsg, jsonData);
if (jsonMsg.Contains("}"))
{
validJson = true;
//This part here is executed, but when I print(jsonMsg), it just prints the character "{" which gets transmitted in the first segment
}
}
0 в массиве преобразуются в байты конца строки, поэтому вы не видите символ '}', потому что раньше были символы конца строки.