读书人

C# string 拼凑无效(+=)找不到原

发布时间: 2012-09-29 10:30:01 作者: rapoo

C# string 拼接无效(+=),找不到原因,大神们帮忙啊

C# code
 private void bt_test_Click(object sender, EventArgs e)        {            IPAddress[] ipAddress =  Dns.GetHostAddresses("whois.verisign-grs.com");            byte[] receiveBufferStr = new byte[1024];            IPEndPoint ipep = new IPEndPoint(ipAddress[0],43);            Socket socket = new Socket(ipep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);            string result = "";            int i = 0;                                    socket.Connect(ipep);            socket.Send(Encoding.ASCII.GetBytes("waihuiqq.com\r\n"));            do            {                i = socket.Receive(receiveBufferStr);                string temp  = Encoding.ASCII.GetString(receiveBufferStr);                result += temp;//此处会都多次执行到,但result的值一直是第一次的值                //rtb_result.AppendText(temp);//可以得到完整的结果            } while (i > 0);            rtb_result.Clear();            rtb_result.AppendText(result);            MessageBox.Show("完成");        }


程序是相找socket收到数据存到一个字符串里,但在做拼接时得不到预期的效果。
如果是用RichTextBox.AppendText()可以得到完整的结果。
这是什么情况啊?

[解决办法]
你把变量temp放在do循环内部,当然不行了,temp变量声明放在循环外部就可以了。

C# code
string temp = "";do{      i = socket.Receive(receiveBufferStr);      temp  = Encoding.ASCII.GetString(receiveBufferStr);      result += temp;} while (i > 0);
[解决办法]
“得不到预期的效果”这个词儿太泛泛了,谁知道你得到的真实效果是什么呢?

receiveBufferStr中只有前i个字节才是接收到的数据,你为什么要把整个receiveBufferStr都进行解码呢?

读书人网 >C#

热点推荐