System.Text.GetBytes сокращает мои данные, исправить? - PullRequest
0 голосов
/ 29 мая 2018

Итак, у меня есть эта функция:

byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

Я отправляю полученный байтовый массив по сети клиенту.Проблема состоит в том, что входные строковые данные довольно длинные, и это преобразует их в массив размером всего 33, что, как я уже знаю, недостаточно, и, конечно, на стороне клиента, когда я преобразую обратно в строку, это как 1/10 отстрока.Любая идея, чем это вызвано?

В случае, если это уместно, входная строка:

MSH|^~\&|NEMEC APP|FBMI MENTAL HEALTH INSTITUTE|CLIENT APP|CLIENT FACILITY|20180529201338||ORU^R01^ORU_R01|20110614000009|P|2.4|||NE|AL|Czechia|ASCII||ASCII
PID|||2011021||Name||Date|O|||Address|
PV1||I|^^OR-1^10.2.56.5:1
ORC|RE
OBR|1|||VITAL|||20110616122516||||||||||||||||||A
OBX|1|NM|_001000^VITAL HR|1|92|bpm|||||F|||20110616122516|||
OBX|2|NM|_002000^VITAL VPC|1|0|/min|||||F|||20110616122516|||
OBX|3|NM|_003000^VITAL ST1|1|0.00|mV|||||F|||20110616122516|||
OBX|4|NM|_003001^VITAL ST2|1|0.02|mV|||||F|||20110616122516|||
OBX|5|NM|_003002^VITAL ST3|1|0.02|mV|||||F|||20110616122516|||
OBX|6|NM|_003003^VITAL STVR|1|-0.01|mV|||||F|||20110616122516|||
OBX|7|NM|_003004^VITAL STVL|1|0.00|mV|||||F|||20110616122516|||
OBX|8|NM|_003005^VITAL STVF|1|0.02|mV|||||F|||20110616122516|||
OBX|9|NM|_004001^VITAL APSEC(RESP)|1|1|sec|||||F|||20110616122516|||
OBX|10|NM|_004073^VITAL rRESP(co2)|1|16|/min|||||F|||20110616122516|||
OBX|11|NM|_007000^VITAL SpO2|1|99|%|||||F|||20110616122516|||
OBX|12|NM|_007001^VITAL PR(spo2)|1|90|/min|||||F|||20110616122516|||
OBX|13|NM|_028000^VITAL TEMP2|1|24.1|C|||||F|||20110616122516|||
OBX|14|NM|_044000^VITAL ART(S)|1|87|mmHg|||||F|||20110616122516|||
OBX|15|NM|_044001^VITAL ART(D)|1|50|mmHg|||||F|||20110616122516|||
OBX|16|NM|_044002^VITAL ART(M)|1|65|mmHg|||||F|||20110616122516|||
OBX|17|NM|_044006^VITAL PR(art)|1|90|/min|||||F|||20110616122516|||
OBX|18|NM|_052000^VITAL PAP(S)|1|30|mmHg|||||F|||20110616122516|||
OBX|19|NM|_052001^VITAL PAP(D)|1|6|mmHg|||||F|||20110616122516|||
OBX|20|NM|_052002^VITAL PAP(M)|1|16|mmHg|||||F|||20110616122516|||
OBX|21|NM|_053000^VITAL CVP(S)|1|17|mmHg|||||F|||20110616122516|||
OBX|22|NM|_053001^VITAL CVP(D)|1|7|mmHg|||||F|||20110616122516|||
OBX|23|NM|_053002^VITAL CVP(M)|1|8|mmHg|||||F|||20110616122516|||
OBX|24|NM|_058000^VITAL ICP(S)|1|300|mmHg|||||F|||20110616122516|||
OBX|25|NM|_058001^VITAL ICP(D)|1|300|mmHg|||||F|||20110616122516|||
OBX|26|NM|_058002^VITAL ICP(M)|1|300|mmHg|||||F|||20110616122516|||
OBX|27|NM|_058003^VITAL CPP|1|-235|mmHg|||||F|||20110616122516|||
OBX|28|NM|_072044^VITAL rPR(art)|1|90|/min|||||F|||20110616122516|||
OBX|29|NM|_073000^VITAL RESP(co2)|1|16|/min|||||F|||20110616122516|||
OBX|30|NM|_073001^VITAL EtCO2|1|48.0|mmHg|||||F|||20110616122516|||
OBX|31|NM|_073003^VITAL APSEC(CO2)|1|1|sec|||||F|||20110616122516|||
;n

В то время как после преобразования обратно из байтового массива на стороне клиента остается только это:

MSH|^~\&|NEMEC APP|FBMI MENTAL HEALTH INSTITUTE|CLIENT APP|CLIENT FACILITY|20180529201338||ORU^R01^ORU_R01|20110614000009|P|2.4|||NE|AL|Czechia|ASCII||ASCII
PID|||2011021||Name||Date|O|||Address|
PV1||I|^^OR-1^10.2.56.5:1
ORC|RE
OBR|1|||VITAL|||20110616122

Таким образом, для фактического кода:

строковые данные равны приведенным выше, до этого момента проблем не возникало.Что следует на стороне сервера:

byte[] msg=System.Text.Encoding.ASCII.GetBytes(data);
stream.Write(msg, 0, msg.Length);

На стороне клиента есть функция sendReceive, которая заботится об отправке запроса и получении ответа.

static string sendRec(string message)
{
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);
    NetworkStream stream = client.GetStream();
    stream.Write(data, 0, data.Length);
    data = new Byte[256];

    String responseData = String.Empty;
    Int32 bytes         = stream.Read(data, 0, data.Length);
    responseData        = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine("Received: {0}", responseData);

    return responseData;
}

Однако я вполне уверен,что проблема возникает на стороне сервера.

...