Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        /// <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();//更新用户列表
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        /// <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();
        }
Ejemplo n.º 5
0
        /// <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());
        }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
0
        /// <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();
        }