日期:2014-05-17  浏览次数:20888 次

这就是C#的BUG呢还是我不懂原理??socket返回的字符串无法正常运用字符串的运算符"+"!
C# code

                    Socket sockets = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    sockets.Connect(IPAddress.Parse("220.181.29.160"), 80);  //注:可以换成任意有回复的ip或端口
                    byte[] bdata = Encoding.Default.GetBytes("get");   //注:可以换成任意有回复的应用
                    sockets.Send(bdata);
                    int bufLen = sockets.ReceiveBufferSize;
                    byte[] bData = new byte[bufLen];
                    int DataLen = sockets.Receive(bData);
                    string reStrData = Encoding.ASCII.GetString(bData, 0, bData.Length);
                    sockets.Close();


                    MessageBox.Show(reStrData + "BBBBBB");  //问题:6个"B"没有显示,为何? 注意:B可换成任意字符串/MessageBox也可以换成任意控件或其他类型
                    MessageBox.Show("BBBBBB" + reStrData);  //6个"B"或其他字符串在前面时,正常显示出结果了




第一个 MessageBox 不加后面的字符串,这里用6个B举例。。。。restrdata最后面时正常的,我不懂为何,哪位好朋友能解释下原因吗?试过先string tmpstr=reStrData; 再 tmpstr+="BBBBBB";结果也是不行,反正是restrData后面的字符串都不显示。。。。
这鬼异的问题困扰我一年多了,半夜都睡不好觉起来发贴咨询下好朋友们!望不吝赐教,感激!

------解决方案--------------------
字符串有个结束标志\0...