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都进行解码呢?