// 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(); }
// 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(); } }
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(); } }