Example #1
0
        // gửi gói tin tới cho client
        private void sendToClient(string nameUser, string ms)
        {
            BllServer UserSending = listUser.Find(x => x.name == nameUser);

            if (nameUser != "ALL") // Gửi tin mặc định đến kênh ALL
            {
                foreach (TcpClient clientItem in clientList)
                {
                    string ipClient = ((IPEndPoint)clientItem.Client.RemoteEndPoint).ToString();
                    if (ipClient == UserSending.address)
                    {
                        this.SendMessage(clientItem, ms);
                    }
                }
            }
            else
            {
                foreach (TcpClient item in clientList)
                {
                    this.SendMessage(item, ms);
                }
            }
            AddMessage(messTxt.Text);
            messTxt.Clear();
        }
Example #2
0
        // nhận tin
        void Receive(Object obj)
        {
            TcpClient client = obj as TcpClient;

            try
            {
                while (true)
                {
                    byte[]        data     = new byte[1024];
                    NetworkStream ns       = client.GetStream();
                    byte[]        size     = new byte[2];
                    int           recv     = ns.Read(size, 0, 2);
                    int           packsize = BitConverter.ToInt16(size, 0);
                    recv = ns.Read(data, 0, packsize);
                    BllServer userReceive = new BllServer(data);
                    if (userReceive.message == "dang_nhap-" + keyDangNhap) // kiểm tra đăng nhập
                    {
                        int count = 0;
                        foreach (BllServer item in listUser)
                        {
                            if (userReceive.name == item.name && userReceive.password == item.password)
                            {
                                if (userReceive.receiveDir == 1)
                                {
                                    if (item.status == "Online")
                                    {
                                        SendMessage(client, "TK da dang nhap");
                                        break;
                                    }
                                    SendMessage(client, "Dang nhap thanh cong");
                                    client.Close();
                                }
                                else
                                {
                                    string ip = ((IPEndPoint)client.Client.RemoteEndPoint).ToString();
                                    item.address = ip;
                                    item.status  = "Online";
                                    SendListOnline();
                                }
                                setDataListView();
                                break;
                            }
                            count++;
                        }
                        if (count == listUser.Count())
                        {
                            SendMessage(client, "Dang nhap that bai");
                        }
                    }
                    else if (userReceive.message.Contains("SendClient"))
                    {
                        string[] arrayString         = userReceive.message.Split('-');
                        string   messageSendToClient = userReceive.name + " Send to you: " + arrayString[2];
                        string   messageSaveInServer = userReceive.name + " Send to " + arrayString[1] + ": " + arrayString[2];
                        AddMessage(messageSaveInServer);
                        sendToClient(arrayString[1], messageSendToClient);
                    }
                    else if (userReceive.message.ToUpper().Equals("EXIT"))
                    {
                        foreach (BllServer userItem in listUser)
                        {
                            if (userItem.name == userReceive.name)
                            {
                                RemoveClientConnect(userReceive.address);
                                userItem.address = "...";
                                userItem.status  = "Offline";
                                setDataListView();
                                SendListOnline();
                                break;
                            }
                        }
                    }
                    else if (userReceive.message != "")
                    {
                        // hiển thị user nào đang gửi tin tới
                        AddMessage(userReceive.name + ": " + userReceive.message);
                    }
                }
            }
            catch
            {
                clientList.Remove(client);
                client.Close();
            }
        }
Example #3
0
        private void btnLogin_Click(object sender, System.EventArgs e)
        {
            if (string.IsNullOrEmpty(cmbEmpID.Text) || string.IsNullOrEmpty(txtPassword.Text))
            {
                MessageBox.Show(@"请输入账号和密码!");
                return;
            }
            BllServer    bllServer    = new BllServer();
            BllEmployee  bllEmployee  = new BllEmployee();
            BllEmpPowers bllEmpPowers = new BllEmpPowers();

            try
            {
                if (bllServer.TestConnection())
                {
                    using (DataTable dtUser = bllEmployee.GetEmployeeInfo(cmbEmpID.Text, 0))
                    {
                        if (dtUser == null)
                        {
                            MessageBox.Show(@"工号输入错误或不存在该人员工号!");
                            cmbEmpID.Text    = string.Empty;
                            txtPassword.Text = string.Empty;
                            cmbEmpID.Focus();
                            return;
                        }
                        if (dtUser.Rows.Count == 0)
                        {
                            MessageBox.Show(@"没有创建该工号!");
                            cmbEmpID.Text    = string.Empty;
                            txtPassword.Text = string.Empty;
                            cmbEmpID.Focus();
                            return;
                        }
                        if (!dtUser.Rows[0]["Password"].ToString().Equals(txtPassword.Text))
                        {
                            MessageBox.Show(@"密码错误,请重新输入!");
                            txtPassword.Text = string.Empty;
                            txtPassword.Focus();
                            return;
                        }
                        if (chkRemember.Checked)
                        {
                            //记住用户名
                            string        strLoginName = cmbEmpID.Text;
                            List <string> lstLoginName = new List <string>
                            {
                                strLoginName
                            };
                            string[] registry = ResistryKey.GetRegistry(RegisterValueName);
                            if (null != registry)
                            {
                                foreach (string name in registry.TakeWhile(name => lstLoginName.Count < MaxLoginNameSaveCount).Where(name => 0 != StringComparer.CurrentCulture.Compare(strLoginName.ToUpper(), name.ToUpper())))
                                {
                                    lstLoginName.Add(name);
                                }
                            }
                            ResistryKey.SetRegistry(RegisterValueName, lstLoginName.ToArray());
                        }
                        //保存用户信息
                        Employee employee = new Employee();
                        employee.EmployeeNo    = dtUser.Rows[0]["EmployeeNo"].ToString();
                        employee.EmployeeName  = dtUser.Rows[0]["EmployeeName"].ToString();
                        employee.Age           = Convert.ToInt32(dtUser.Rows[0]["Age"]);
                        employee.Gender        = dtUser.Rows[0]["Gender"].ToString();
                        employee.MoblePhone    = dtUser.Rows[0]["MoblePhone"].ToString();
                        employee.PassWord      = dtUser.Rows[0]["PassWord"].ToString();
                        CurrentInfo.currentEmp = employee;
                        dtUser.Dispose();

                        //用户权限
                        Dictionary <int, string> empPowersLst = new Dictionary <int, string>();
                        DataTable dtPower = bllEmpPowers.GetEmpPowers(cmbEmpID.Text);
                        for (int i = 0; i < dtPower.Rows.Count; i++)
                        {
                            if (!empPowersLst.ContainsKey(Convert.ToInt32(dtPower.Rows[i]["PowerNo"])))
                            {
                                empPowersLst.Add(Convert.ToInt32(dtPower.Rows[i]["PowerNo"]), dtPower.Rows[i]["EmployeeNo"].ToString());
                            }
                        }
                        CurrentInfo.currentPowers = empPowersLst;
                        dtPower.Dispose();
                        //List<EmpPowers> empPowersLst = new List<EmpPowers>();
                        //DataTable dtPower = bllEmpPowers.GetEmpPowers(cmbEmpID.Text);
                        //for (int i = 0; i < dtPower.Rows.Count; i++)
                        //{
                        //    EmpPowers empPowers = new EmpPowers();
                        //    empPowers.EmployeeNo = dtPower.Rows[0]["EmployeeNo"].ToString();
                        //    empPowers.PowerNo = dtPower.Rows[0]["PowerNo"].ToString();
                        //    empPowersLst.Add(empPowers);
                        //}


                        FrmMain frmMain = new FrmMain();
                        this.Hide();
                        frmMain.ShowDialog();
                    }
                }
                else
                {
                    MessageBox.Show(@"网络连接失败,检查网络后重试!");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                Application.Exit();
                Application.ExitThread();
            }
        }