C#编程遇到一个奇怪问题
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#水平实在是没法解决这个问题
{
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#水平实在是没法解决这个问题
...全文
相关推荐
C#大作业四次作业---w界面奇奇怪怪的w
俺的大作业!
奇怪的大冒险源码
该资源是奇怪的大冒险一部分源码,图片资源,以及游戏逻辑,对初级中级程序猿的成长有一定的帮助。
AspNetCoreIIsExpress
AspNetCoreIIsExpress 如果有人尝试在一个IIS Express站点中部署多个.net核心应用程序,则创建该项目是为了显示奇怪的行为。
c# ListBox 删除选定的多项
c# ListBox 删除选定的多项 本人在网上找了好久,没找到。自己写了一个,参考了好几本书,和一些网络资源,几经修改,终于成功!虽然简单,但对我学c#菜鸟还是挺难得!还附带了一个错误的代码!本人未找到错误,但是操作时,如果选择奇数项n个就删除(n+1)/2 项,偶数项就删除一半。不明白!希望有心人能够帮忙释疑,谢谢。联系方式 yh2216@126.com
cs代码-阿爸爸爸爸吧
cs代码-阿爸爸爸爸吧


