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()可以得到完整的结果。
这是什么情况啊?
{
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()可以得到完整的结果。
这是什么情况啊?
string temp = "";
do
{
i = socket.Receive(receiveBufferStr);
temp = Encoding.ASCII.GetString(receiveBufferStr);
result += temp;
} while (i > 0);
你可能是误解了,我是要找结果拼接到result这个变量里的。
本来我temp也是放在do while的外面的,和这个没关系。
再请教个问题,每一次Receive操作之后就去解码会有什么问题?