NetworkStream netstream = _tcpc.GetStream();
                //向服务器发送用户名以确认身份
                netstream.Write(Encoding.Unicode.GetBytes(user_tb.Text), 0, Encoding.Unicode.GetBytes(user_tb.Text).Length);
                //得到登录结果
                byte[] buffer = new byte[50];
                netstream.Read(buffer, 0, buffer.Length);
                string connResult = Encoding.Unicode.GetString(buffer).TrimEnd('\0');
                if (connResult.Equals("cmd::Failed"))
最后这句cmd::Failed是什么意思啊

解决方案 »

  1.   

      if (connResult.Equals("cmd::Failed"))
     {
                        MessageBox.Show("您的用户名已经被使用,请尝试其他用户名!",
                                        "提示",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Information);
                        return;
                    }
    那下面的判定用户名已经被使用是如何实现的呐?
      

  2.   

    if (connResult.Equals("cmd::Failed"))
    {
        MessageBox.Show("您的用户名已经被使用,请尝试其他用户名!",
        "提示",
        MessageBoxButtons.OK,
        MessageBoxIcon.Information);
        return;
    }楼主贴的应该是WINFORM代码.如果服务器返回的信息为"cmd::Failed",则表示该用户已经登录(或被使用),提示用户换其它用户名.
      

  3.   

    if (connResult.Equals("cmd::Failed")) 相当于:
    if (connResult == "cmd::Failed")equals 用于确定两个 Object 实例是否相等。 
    == 用于确定两个同类型的值是否相等!然而,事实上,在.net以后的版本中,如果两个对象可以 ==,那么它们一定是 equals 的!
    在现在的.net中,equals 于 == 几乎没有区别!
      

  4.   

    是否已经登录是在服务器上的软件实现的,用tcp通讯实现验证.
      

  5.   

    呵呵,"cmd::Failed" 只是服务器判断你发的登陆信息之后给你发送的一个字符信息.所做的登陆判断是根据你向服务器发送的信息在服务器端已经判定完毕了.你得到的cmd::Failed只是判定完毕后给你客户端发送的判定信息. 程序里面定义客户端得到回复为cmd::Failed就说明登陆失败.客户端只需要判定得到的字符串,所以一旦等于cmd::Failed就说明失败了. 至于你说的判定用户名已被使用也是根据cmd::Failed得到的.(一般这个程序会服务器端定义enum 来说明登陆所有可能发生情况,来返回给客户端)你得到cmd::Failed 刚好是定义为" 登陆失败,用户名已经被使用" 这种情况.其实所有的判断都是在服务器端已经判定完毕的.你可以看下服务器端代码.