C#编程遇到一个奇怪问题

在梅边 在梅边 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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#水平实在是没法解决这个问题
...全文
评论 7
收藏 已收藏
分享
返回顶部
在梅边
C# 111,129 成员 642,539 内容