string emessage = System.Text.Encoding.UTF8.GetString(stream);
 if (emessage == "haha")
                   {
                        MessageBox.Show("emessang的信息是:" + emessage);                    }
                    else
                    {
                        MessageBox.Show("问题何在");
                        MessageBox.Show("emessang的信息是(getscreen):" + emessage);
                    }
emessage得到的是“haha”,但是为何比较的时候两者不相等?

解决方案 »

  1.   

    你确定emessage 真的是haha么?
      

  2.   

    好好看看 emessage带空格和其他一些不可见字符吗,比如换行符
      

  3.   

    前面加了句byte[] stream = Encoding.ASCII.GetBytes("haha");
      

  4.   

    确定,我使用Messagebox将emessagad的值显示出来,的确是这样的。搞了半天也不知道咋回事。
      

  5.   

    应该是有空格  加个trim() 试试
      

  6.   

    我是通过SOCKET传输获得的
    发送端是这样的:
    string smessage = "haha";
                    string MyName = Dns.GetHostName();//获取本机的主机名
                    reqstreamW = new StreamWriter(tcpStream);//以特定的编码往数据流中写入数据;默认的是UTF8
                    reqstreamW.Write(smessage);//将字符串写入到数据流中
                    reqstreamW.Flush();//清除当前编写器的所有数据缓冲区,并将所有的缓冲数据写入到基础流中
      

  7.   

    试过,
    string emessage = System.Text.Encoding.UTF8.GetString(Recivestream ).Trim ();
    这样是不?
      

  8.   

     Byte[] Recivestream = new Byte[80];
     int i = skSocket.ReceiveFrom(Recivestream, ref tempremoteEP);                    string emessage = System.Text.Encoding.UTF8.GetString(Recivestream );
    这样接受的数据会有其他的不可见字符吗?
    发送端说是这样的
    string smessage = "getscreen";
                    string MyName = Dns.GetHostName();//获取本机的主机名
                    reqstreamW = new StreamWriter(tcpStream);//以特定的编码往数据流中写入数据;默认的是UTF8
                    reqstreamW.Write(smessage);//将字符串写入到数据流中
                    reqstreamW.Flush();//清除当前编写器的所有数据缓冲区,并将所有的缓冲数据写入到基础流中
      

  9.   

    Byte[] Recivestream = new Byte[80];
    int i = skSocket.ReceiveFrom(Recivestream, ref tempremoteEP);
    string emessage = System.Text.Encoding.UTF8.GetString(Recivestream);
    上面是原先的代码,应接受实际收到的字节数,把最后那行程序改为下面语句就行了。
    string emessage = System.Text.Encoding.UTF8.GetString(Recivestream,0,i );