try
{
clientSocket.Receive(inBuffer, 10, SocketFlags.None);
int backlen = Int32.Parse(Encoding.GetEncoding("GBK").GetString(inBuffer));
MessageBox.Show("接收字符长度为"+backlen.ToString());
clientSocket.Receive(inBuffer, 40, SocketFlags.None);
inBuffer = new Byte[20000];
List<byte> getbyte = new List<byte>();
while (clientSocket.Receive(inBuffer, backlen-40, SocketFlags.None) > 0)
{
getbyte.AddRange(inBuffer);
}
byte[] getbuff = getbyte.ToArray();
richTextBox2.Text = DecryptDES(getbuff, textBox3.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
代码如上,此段代码是要接受socket,数据流的规则是前10个字符为报文的整个长度(算上40个空格),后40个字符为空格,然后是数据包(密文)
以上代码的作用就是解密,但是很奇怪的是,
MessageBox.Show("接收字符长度为"+backlen.ToString());
这句代码影响着解密的成败,如果有这句,解密就会成功,如果没有,解密会成功一半,如下图
请高人解答,本人C#水平实在是没法解决这个问题