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> private void UpdateUserState(ClassMsg msg, IPAddress Ip, int Port) { ClassOptionData OptionData = new ClassOptionData(); OptionData.ExSQL("Update CurreneyUser Set Sign = " + Convert.ToString((int)(msg.msgCommand)) + " Where ID = " + msg.SID); DataTable DataReader = OptionData.ExSQLReDr("Select * From 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; int i = 0; while (DataReader.Rows.Count == i) { udpSocket1.Send(IPAddress.Parse(DataReader.Rows[i]["IP"].ToString()), Convert.ToInt16(DataReader.Rows[i]["Port"]), new ClassSerializers().SerializeBinary(msg).ToArray()); i++; } OptionData.Dispose(); LoadUsrLst(); //UpdateUser(); }
/// <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();//更新用户列表 }
/// <summary> /// 用户登录 /// </summary> /// <param name="msg"></param> /// <param name="ip"></param> /// <param name="port"></param> /// <param name="state"></param> private void UserLogin(ClassMsg msg, IPAddress ip, int port, int state) { LoginMsg loginmsg = (LoginMsg) new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data)); ClassOptionData OptionData = new ClassOptionData(); //创建并引用ClassOptionData MsgCommand msgState = msg.msgCommand; //获取接收消息的命令 String UserName = loginmsg.UserName; //登录用户名称 String PassWord = loginmsg.PassWord; //用户密码 String vIP = ip.ToString(); //用户IP地址 DataTable DataReader = OptionData.ExSQLReDr("Select * From user Where UserAccount = " + "'" + UserName + "'" + " and UserPassWord = "******"'" + PassWord + "'");//在数据库中通过用户名和密码进行查找 if (DataReader.Rows.Count != 0) //当DataReader中有记录信息时 { string ID = DataReader.Rows[0]["UserID"].ToString(); //获取第一条记录中的ID字段值 //修改当前记录的标识为上线状态 OptionData.ExSQL("Update 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); //更新用户在线状态 } else { SendMsgToOne(ip, port, msg); } OptionData.Dispose(); LoadUsrLst(); //UpdateUser();//更新用户列表 }
private void F_Server_FormClosed(object sender, FormClosedEventArgs e) { udpSocket1.Active = false; ClassOptionData OptionData = new ClassOptionData(); OptionData.ExSQL("Update tb_CurreneyUser Set Sign =12 Where ID >0"); OptionData.Dispose(); }
/// <summary> /// 向用户发送信息 /// </summary> /// <param name="msg"></param> /// <param name="Ip"></param> /// <param name="Port"></param> private void SendUserMsg(ClassMsg msg, IPAddress Ip, int Port) { ClassOptionData OptionData = new ClassOptionData(); DataTable DataReader = OptionData.ExSQLReDr("Select * From CurreneyUser Where ID = " + msg.RID); string ip = DataReader.Rows[0]["IP"].ToString(); int port = Convert.ToInt16(DataReader.Rows[0]["Port"]); udpSocket1.Send(IPAddress.Parse(ip), port, new ClassSerializers().SerializeBinary(msg).ToArray()); OptionData.Dispose(); DataReader.Dispose(); }
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> /// <returns></returns> private ClassMsg InsertUser(ClassMsg msg, IPAddress ip, int port) { RegisterMsg registermsg = (RegisterMsg) new ClassSerializers().DeSerializeBinary(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 CurreneyUser (IP,Port,Name,PassWord,Sign) values ('" + vIP + "'," + port.ToString() + ",'" + UserName + "','" + PassWord + "'," + Convert.ToString((int)(MsgCommand.Registered)) + ")"); DataTable DataReader = OptionData.ExSQLReDr("select * from CurreneyUser"); LoadUsrLst(); //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 UpdateUserList(ClassMsg msg, IPAddress ip, int port) { ClassUsers Users = new ClassUsers(); ClassOptionData OptionData = new ClassOptionData(); DataTable DataReader = OptionData.ExSQLReDr("select * from CurreneyUser"); int i = 0; while (DataReader.Rows.Count != i) { DataRow dtr = DataReader.NewRow(); dtr = DataReader.Rows[i]; ClassUserInfo UserItem = new ClassUserInfo(); //创建并引用ClassUserInfo类 UserItem.UserID = dtr["ID"].ToString(); //记录用户用编号 UserItem.UserIP = dtr["IP"].ToString(); //记录用户的IP地址 UserItem.UserPort = dtr["Port"].ToString(); //记录端口号 UserItem.UserName = dtr["Name"].ToString(); //记录用户名称 UserItem.State = dtr["Sign"].ToString(); //记录当前状态 Users.add(UserItem); //将单用户信息添加到用户列表中 i++; } BinaryFormatter serializer = new BinaryFormatter(); MemoryStream memStream = new MemoryStream(); //创建一个内存流存储区 serializer.Serialize(memStream, Users); //将对象序列化为二进制流 msg.Data = memStream.ToArray(); //new ClassSerializers().SerializeBinary(Users).ToArray();//将用户列表写入到二进制流中 //查找当前已上线的用户 DataReader = OptionData.ExSQLReDr("Select * From CurreneyUser Where Sign = " + MsgCommand.Logined); i = 0; while (DataReader.Rows.Count == i)//向所有上线用户发送用户列表 { udpSocket1.Send(IPAddress.Parse(DataReader.Rows[i]["IP"].ToString()), Convert.ToInt16(DataReader.Rows[i]["Port"]), new ClassSerializers().SerializeBinary(msg).ToArray()); i++; } OptionData.Dispose(); }
/// <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(); }
/// <summary> /// 发送用户信息 /// </summary> /// <param name="msg"></param> /// <param name="ip"></param> /// <param name="port"></param> private void SendUserList(ClassMsg msg, IPAddress ip, int port) { ClassUsers Users = new ClassUsers(); ClassOptionData OptionData = new ClassOptionData(); DataTable DataReader = OptionData.ExSQLReDr("Select * From CurreneyUser"); int i = 0; while (DataReader.Rows.Count != i) { DataRow dtr = DataReader.NewRow(); dtr = DataReader.Rows[i]; ClassUserInfo UserItem = new ClassUserInfo(); //创建并引用ClassUserInfo类 UserItem.UserID = dtr["ID"].ToString(); //记录用户用编号 UserItem.UserIP = dtr["IP"].ToString(); //记录用户的IP地址 UserItem.UserPort = dtr["Port"].ToString(); //记录端口号 UserItem.UserName = dtr["Name"].ToString(); //记录用户名称 UserItem.State = dtr["Sign"].ToString(); //记录当前状态 Users.add(UserItem); //将单用户信息添加到用户列表中 i++; } OptionData.Dispose(); msg.Data = new ClassSerializers().SerializeBinary(Users).ToArray(); udpSocket1.Send(ip, port, new ClassSerializers().SerializeBinary(msg).ToArray()); }