Я пытаюсь прочитать ответ сервера при попытке войти в систему, используя networkStream.read()
, используя следующий код:
if (connectionStream.DataAvailable && connectionStream.CanRead)
{
byte[] myReadBuffer = new byte[64];
string responseMessage = string.Empty;
int numberOfBytesRead = 0;
do
{
numberOfBytesRead = connectionStream.Read(myReadBuffer, 0, myReadBuffer.Length);
responseMessage = Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead);
} while (connectionStream.DataAvailable);
Debug.Log("Message:" + responseMessage);
#breakpoint
if (responseMessage.Contains("OK"))
{
Debug.Log("logon sucessful");
}
else
{
Debug.LogError("Logon denied!");
}
}
Проверяя мои локальные переменные в breakpoint
, я знаю Read()
выполняется без проблем, поскольку numberOfBytesRead
установлен на 32, а myReadBuffer
заполнен 32 байтами (все байты в myReadBuffer
соответствуют байтам, отправленным сервером).Однако после попытки извлечь строку из myReadbuffer
с помощью Encoding.ASCII.GetString()
строка все еще пуста (Visual Studio также сообщает, что она пуста в точке останова), даже если myReadBuffer
не является.
Байтыв myReadBuffer
читать:
32 0 0 0
1 0 0 0
0 0 0 0
76 79 71 79
78 58 32 48
59 79 75 59
32 83 83 61
54 66 67 0
, что переводится как: _ _ _ _ _ _ _ _ _ _ L O G O N : 0 ; O K ; S S = 5 A 8 _
Есть предложения относительно того, что может вызвать это?