Example #1
0
        private void ParseLoginDataAndReturn(string jsonStr, NetworkStream stream)
        {
            FlowChatSendLoginDataJson sendLoginData = JsonConvert.DeserializeObject <FlowChatSendLoginDataJson>(jsonStr);

            if (sendLoginData.Type == "Login")
            {
                FlowChatUserModel loginUserData = sendLoginData.Data as FlowChatUserModel;

                Console.WriteLine("Client " + tcpClient.Client.RemoteEndPoint.ToString() + " loggin to the Server...");

                if (userDAL.CheckUser(loginUserData.UserName, loginUserData.Password, out loginUserData))
                {
                    FlowChatReceiveLoginDataJson recvLoginData = new FlowChatReceiveLoginDataJson();
                    recvLoginData.Data   = loginUserData;
                    recvLoginData.Type   = "Login";
                    recvLoginData.Status = 1;

                    var sendBuffer = Encoding.UTF8.GetBytes(FlowChatConsts.NETWORK_RECV_DATA_LOGIN_REGISTER_PREFIX + "|" + recvLoginData.ToJSON());
                    stream.Write(sendBuffer, 0, sendBuffer.Length);

                    loginedUserData = loginUserData;

                    Console.WriteLine("Client " + tcpClient.Client.RemoteEndPoint.ToString() + " Login Success!");
                }
                else
                {
                    FlowChatReceiveLoginDataJson recvLoginData = new FlowChatReceiveLoginDataJson();
                    recvLoginData.Data    = null;
                    recvLoginData.Type    = "Login";
                    recvLoginData.Status  = 0;
                    recvLoginData.Message = "Username or Password is incorrect";

                    tcpClient.Client.Send(Encoding.UTF8.GetBytes(FlowChatConsts.NETWORK_RECV_DATA_LOGIN_REGISTER_PREFIX + "|" + recvLoginData.ToJSON()));

                    loginedUserData = null;

                    Console.WriteLine("Client " + tcpClient.Client.RemoteEndPoint.ToString() + " Login Failed!");
                }
            }
            else if (sendLoginData.Type == "Register")
            {
                FlowChatUserModel registerUserData = sendLoginData.Data as FlowChatUserModel;
                if (!userDAL.CheckUser(registerUserData.UserName, out registerUserData))
                {
                    userDAL.AddUser(registerUserData, out registerUserData);

                    FlowChatReceiveLoginDataJson recvRegData = new FlowChatReceiveLoginDataJson();
                    recvRegData.Data   = registerUserData;
                    recvRegData.Type   = "Register";
                    recvRegData.Status = 1;

                    loginedUserData = registerUserData;

                    tcpClient.Client.Send(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(recvRegData)));
                }
                else
                {
                    FlowChatReceiveLoginDataJson recvRegData = new FlowChatReceiveLoginDataJson();
                    recvRegData.Data    = null;
                    recvRegData.Type    = "Register";
                    recvRegData.Status  = 0;
                    recvRegData.Message = "The User with the same username has already existed!";

                    loginedUserData = null;

                    tcpClient.Client.Send(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(recvRegData)));
                }
            }
        }
Example #2
0
        private void Worker_DoWork(object sender, DoWorkEventArgs e)
        {
            object[] arr = new object[2];

            try
            {
                FlowChatUserModel userModel = new FlowChatUserModel();
                userModel.UserName = txtUsername.Text;
                userModel.Password = txtPassword.Text;

                FlowChatSendLoginDataJson sendLoginDataJson = new FlowChatSendLoginDataJson();
                sendLoginDataJson.Type = "Login";
                sendLoginDataJson.Data = userModel;

                string jsonStr = sendLoginDataJson.ToJSON();
                jsonStr = FlowChatConsts.NETWORK_SEND_DATA_LOGIN_REGISTER_PREFIX + "|" + jsonStr;

                NetworkStream stream = tcpClient.GetStream();
                var           buffer = Encoding.UTF8.GetBytes(jsonStr);
                stream.Write(buffer, 0, buffer.Length);

                System.Threading.Thread.Sleep(1000);

                buffer = new byte[3096];
                int    len       = stream.Read(buffer, 0, buffer.Length);
                byte[] newBuffer = new byte[len];
                for (int i = 0; i < len; i++)
                {
                    newBuffer[i] = buffer[i];
                }

                var      str    = Encoding.UTF8.GetString(newBuffer);
                string[] tokens = str.Split('|');
                switch (tokens[0])
                {
                case FlowChatConsts.NETWORK_RECV_DATA_LOGIN_REGISTER_PREFIX:
                    FlowChatReceiveLoginDataJson recvLoginData = JsonConvert.DeserializeObject <FlowChatReceiveLoginDataJson>(tokens[1]);
                    if (recvLoginData.Status == 1)
                    {
                        var useData = recvLoginData.Data;
                        session = new FlowChatSession(tcpClient, useData);

                        arr[0] = "Success";
                        arr[1] = null;
                    }
                    else
                    {
                        arr[0] = "Failed";
                        arr[1] = "Login Failed!";
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                arr[0] = "Failed";
                arr[1] = ex.Message;
            }

            e.Result = arr;
        }