我需要在函数中传递一个参数来连接到一个必须包含xml的服务器(我正在通过一个字符串变量)。但服务器假定我发送的数据流的前4个字节是xml的长度(以字节为单位)。我已经通过
找出了字符串中字节数的长度int strlen= System.Text.ASCIIEncoding.Unicode.GetByteCount(ngconnect);
接下来我需要将数据传递给必须包含数据的服务器
前4个字节作为字符串的长度 然后是实际的数据流。
我写的代码是
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(strlen+ngconnect);
serverStream.Write(outStream, 0, outStream.Length);
我不认为这是正确的。所以请告诉我如何在参数中附加字符串的长度,使其恰好是4个字节。
答案 0 :(得分:2)
c#中的int
是32位数,所以它已经是4字节,你只需将其转换为字节
byte[] strlenBytes = BitConverter.GetBytes(strlen);
然后将信息部分传输到服务器:
serverStream.Write(strlenBytes , 0, strlenBytes .Length);
byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ngconnect);
serverStream.Write(outStream, 0, outStream.Length);