已经实现了一个从客户端序列化对象,服务器端反序列化对象的聊天小程序,问题是我在服务器端得到对象后怎么判断这次服务器要做什么逻辑呢,要是我在客户端序列化前传字符串到服务器序列化就会有问题,我该怎么解决呢?

解决方案 »

  1.   

    不要一条路走死,聊天小程序可以不用序列化啊立即成为编程经验丰富的程序员不是梦,详见:http://www.psec.net.cn
      

  2.   

    private void ClientService(object cli)
            {
                TcpClient tc = (TcpClient)cli;
                Console.WriteLine(((IPEndPoint)tc.Client.RemoteEndPoint).Address.ToString());
                Console.WriteLine(((IPEndPoint)tc.Client.RemoteEndPoint).Port.ToString());
                NetworkStream stream = tc.GetStream();
                StreamReader reader = new StreamReader(stream);
                IFormatter formatter = new BinaryFormatter();
                try
                {
                    //while (true)
                    {
                        string command = reader.ReadLine().Trim();
                        if (command == "register")
                        {
                            this.RegisterNewUser((QQInfo)formatter.Deserialize(stream), tc);
                        }
                        else if (command == "login")
                        {
                            this.Login((QQLogin)formatter.Deserialize(stream), tc);
                        }
                    }
                }
                finally
                {
                    stream.Close();
                }
            }private void btnLogin_Click(object sender, EventArgs e)
            {
                QQLogin q = new QQLogin();
                q.QQNumber = Convert.ToInt32(this.cboQQNumber.Text);
                q.QQPassword = this.txtPassword.Text;
                TcpClient client = new TcpClient();
                client.Connect(IPAddress.Parse("127.0.0.1"), 6000);
                IFormatter formatter = new BinaryFormatter();
                stream = client.GetStream();
                sw = new StreamWriter(stream);
                sw.WriteLine("login");
                sw.Flush();
                formatter.Serialize(stream, q);
                sr = new StreamReader(stream);
                MessageBox.Show(sr.ReadLine());
                stream.Close();
            }