private void UpdateUserList(ClassMsg msg, System.Net.IPAddress Ip, int Port) { ClassUsers Users = new ClassUsers(); ClassOptionData OptionData = new ClassOptionData(); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser"); //查找所有注册的用户信息 while (DataReader.Read()) //遍历所有用户 { ClassUserInfo UserItem = new ClassUserInfo(); //创建并引用ClassUserInfo类 UserItem.UserID = Convert.ToString(DataReader.GetInt32(0)); //记录用户用编号 UserItem.UserIP = DataReader.GetString(1); //记录用户的IP地址 UserItem.UserPort = Convert.ToString(DataReader.GetInt32(2)); //记录端口号 UserItem.UserName = DataReader.GetString(3); //记录用户名称 UserItem.State = Convert.ToString(DataReader.GetInt32(5)); //记录当前状态 Users.Add(UserItem); //将单用户信息添加到用户列表中 } msg.Data = new ClassSerializers().SerializerBinary(Users).ToArray();//将用户列表写入到二进制流中 //查找当前已上线的用户 DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser Where Sign = " + MsgCommand.Logined); while (DataReader.Read())//向所有上线用户发送用户列表 { udpSocket1.Send(IPAddress.Parse(DataReader.GetString(1)), DataReader.GetInt32(2), new ClassSerializers().SerializerBinary(msg).ToArray()); } OptionData.Dispose(); }
/// <summary> /// 用户登录 /// </summary> /// <param name="msg"></param> /// <param name="Ip"></param> /// <param name="Port"></param> /// <param name="State"></param> private void UserLogin(ClassMsg msg, System.Net.IPAddress Ip, int Port, int State) { RegisterMsg registermsg = (RegisterMsg) new ClassSerializers().DeSerializerBinary(new MemoryStream(msg.Data)); ClassOptionData OptionData = new ClassOptionData(); //创建并引用ClassOptionData MsgCommand msgState = msg.msgCommand; //获取接收消息的命令 String UserName = registermsg.UserName; //登录用户名称 String PassWord = registermsg.PassWord; //用户密码 String vIP = Ip.ToString(); //用户IP地址 SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser Where Name = " + "'" + UserName + "'" + " and PassWord = "******"'" + PassWord + "'"); //在数据库中通过用户名和密码进行查找 DataReader.Read(); //读取查找到的记录 string ID = Convert.ToString(DataReader.GetInt32(0)); //获取第一条记录中的ID字段值 if (DataReader.HasRows) //当DataReader中有记录信息时 { //修改当前记录的标识为上线状态 OptionData.ExSQL("Update tb_CurreneyUser Set Sign = " + Convert.ToString((int)(MsgCommand.Logined)) + ",IP = " + "'" + vIP + "',Port = " + "'" + Port.ToString() + "'" + " Where ID = " + ID); msg.msgCommand = MsgCommand.Logined; //设置为上线命令 msg.SID = ID; //用户ID值 SendMsgToOne(Ip, Port, msg); //将消息返回给发送用户 UpdateUserState(msg, Ip, Port); //更新用户在线状态 } OptionData.Dispose(); UpdateUser();//更新用户列表 }
private void SendUserMsg(ClassMsg msg, System.Net.IPAddress Ip, int Port) { ClassOptionData OptionData = new ClassOptionData(); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser Where ID = " + msg.RID); DataReader.Read(); string ip = DataReader.GetString(1); int port = DataReader.GetInt32(2); udpSocket1.Send(IPAddress.Parse(ip), port, new ClassSerializers().SerializerBinary(msg).ToArray()); OptionData.Dispose(); DataReader.Dispose(); }
/// <summary> /// 更新用户列表 /// </summary> private void UpdateUser() { ClassOptionData OptionData = new ClassOptionData(); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser"); LV_SysUser.Items.Clear(); while (DataReader.Read()) { ListViewItem listItem = new ListViewItem(); listItem.Text = Convert.ToString(DataReader.GetInt32(0)); listItem.SubItems.Add(DataReader.GetString(1)); listItem.SubItems.Add(Convert.ToString(DataReader.GetInt32(2))); listItem.SubItems.Add(DataReader.GetString(3)); listItem.SubItems.Add(Convert.ToString(DataReader.GetInt32(5))); LV_SysUser.Items.Add(listItem); } OptionData.Dispose(); }
/// <summary> /// 发送用户信息 /// </summary> /// <param name="msg"></param> /// <param name="Ip"></param> /// <param name="Port"></param> private void SendUserList(ClassMsg msg, System.Net.IPAddress Ip, int Port) { ClassUsers Users = new ClassUsers(); ClassOptionData OptionData = new ClassOptionData(); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser"); while (DataReader.Read()) { ClassUserInfo UserItem = new ClassUserInfo(); UserItem.UserID = Convert.ToString(DataReader.GetInt32(0)); UserItem.UserIP = DataReader.GetString(1); UserItem.UserPort = Convert.ToString(DataReader.GetInt32(2)); UserItem.UserName = DataReader.GetString(3); UserItem.State = Convert.ToString(DataReader.GetInt32(5)); Users.Add(UserItem); } OptionData.Dispose(); msg.Data = new ClassSerializers().SerializerBinary(Users).ToArray(); udpSocket1.Send(Ip, Port, new ClassSerializers().SerializerBinary(msg).ToArray()); }
/// <summary> /// 插入用户 /// </summary> /// <param name="msg"></param> /// <param name="Ip"></param> /// <param name="Port"></param> /// <returns></returns> private ClassMsg InsertUser(ClassMsg msg, System.Net.IPAddress Ip, int Port) { RegisterMsg registermsg = (RegisterMsg) new ClassSerializers().DeSerializerBinary(new MemoryStream(msg.Data)); ClassOptionData OptionData = new ClassOptionData(); MsgCommand Sate = msg.msgCommand; String UserName = registermsg.UserName; //注册用户的名称 String PassWord = registermsg.PassWord; //注册用户的密码 String vIP = Ip.ToString(); //注册用户的IP地址 //向数据表中添加注册信息 OptionData.ExSQL("insert into tb_CurreneyUser (IP,Port,Name,PassWord,Sign) values ('" + vIP + "'," + Port.ToString() + ",'" + UserName + "','" + PassWord + "'," + Convert.ToString((int)(MsgCommand.Registered)) + ")"); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser"); UpdateUser(); //更新用户列表 OptionData.Dispose(); msg.msgCommand = MsgCommand.Registered; //用户注册结束命令 SendMsgToOne(Ip, Port, msg); //将注册命令返回给注册用户 return(msg); }
/// <summary> /// 更新用户在线状态 /// </summary> /// <param name="msg"></param> /// <param name="Ip"></param> /// <param name="Port"></param> private void UpdateUserState(ClassMsg msg, System.Net.IPAddress Ip, int Port) { ClassOptionData OptionData = new ClassOptionData(); OptionData.ExSQL("Update tb_CurreneyUser Set Sign = " + Convert.ToString((int)(msg.msgCommand)) + " Where ID = " + msg.SID); SqlDataReader DataReader = OptionData.ExSQLReader("Select * From tb_CurreneyUser Where Sign = " + Convert.ToString((int)(MsgCommand.Logined))); if (msg.msgCommand == MsgCommand.Close) { msg.msgID = "Down"; } else if (msg.msgCommand == MsgCommand.Logined) { msg.msgID = "Up"; } msg.msgCommand = MsgCommand.UpdateState; while (DataReader.Read()) { udpSocket1.Send(IPAddress.Parse(DataReader.GetString(1)), DataReader.GetInt32(2), new ClassSerializers().SerializerBinary(msg).ToArray()); } OptionData.Dispose(); UpdateUser(); }