【发布时间】:2014-03-20 13:27:41
【问题描述】:
我目前遇到的问题:
我的服务器将数据返回给客户端,其中包括一个名称。现在我希望客户获取这个名称并进行比较。但是在过去的 3 个小时里,我一直被这个问题困扰,我不想廉价解决它。
我的服务器返回一个值,然后是一个名称,例如:random23454@NAMEHERE
我使用以下方法拆分值:
string[] values = returndata.Split('@');
然后我在做:
if (textBox3.Text == values[1]) {
MessageBox.Show("equal");
}
但是,这里的问题是。我无法让它相等,我尝试了其他方法,但它只是不显示相等。
我做了什么:
将 textBox3.Text 打印到文本框并将值 [1] 打印到另一个文本框并与我的眼睛和鼠标进行比较(由于线程而使用调用)。
使用 .Trim() 函数 在 values[1] 上使用 .ToString() (只是为了它) 将它们都分配给一个完整的新字符串,修剪它们并比较它们
将比较拖到线程外使用:
this.Invoke((MethodInvoker)delegate()
{
outside(name);
});
并执行相同的检查。
我的代码:
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
readData = "" + returndata;
if (readData.Contains("@") && readData.Contains("random"))
{
string[] values = returndata.Split('@');
string name = values[1].Trim();
if (textBox3.Text == name)
{
MessageBox.Show("true");
}
else
{
MessageBox.Show("false");
this.Invoke((MethodInvoker)delegate()
{
outside(name);
});
}
我还能做什么?我只是不明白它不相等..
提前致谢。
【问题讨论】:
-
您需要告诉我们
inStream。我强烈怀疑它是一个字节数组,其中包含实际数据,然后是一堆 0...您应该使用string text = Encoding.ASCII.GetString(data, 0, dataRead)- 或使用StreamReader开始。跨度> -
您是否尝试将这两个值都打印到控制台?
-
尝试修剪
TextBox文本。 (textBox3.Text.Trim()) -
我已经将两个值都打印到了 messageBox 和 textBox 中,它们都是一样的。
-
@user2911924 尝试使用
System.Text.Encoding.UTF8.GetString(inStream);而不是System.Text.Encoding.ASCII.GetString(inStream)。
标签: c# multithreading sockets equals