Пример #1
0
        /// <summary>
        /// 更新用户列表
        /// </summary>
        public void UpdateUser()
        {
            MyIM.ClassOptionData optiondata = new MyIM.ClassOptionData();
            DataTable datareader = optiondata.ExSQLReDr("select * from CurreneyUser");
            LV_SysUser.Items.Clear();
            int i = 0;
            while (datareader.Rows.Count != i)
            {
                DataRow dtr = datareader.NewRow();
                dtr = datareader.Rows[i];
                ListViewItem listItem = new ListViewItem();
                listItem.Text = dtr["ID"].ToString();
                listItem.SubItems.Add(dtr["IP"].ToString());
                listItem.SubItems.Add(dtr["Port"].ToString());
                listItem.SubItems.Add(dtr["Name"].ToString());
                listItem.SubItems.Add(dtr["Sign"].ToString());

                LV_SysUser.Items.Add(listItem);
                i++;
            }
            optiondata.Dispose();
        }
Пример #2
0
        /// <summary>
        /// 更新用户列表
        /// </summary>
        public void UpdateUser()
        {
            MyIM.ClassOptionData optiondata = new MyIM.ClassOptionData();
            DataTable            datareader = optiondata.ExSQLReDr("select * from CurreneyUser");

            LV_SysUser.Items.Clear();
            int i = 0;

            while (datareader.Rows.Count != i)
            {
                DataRow dtr = datareader.NewRow();
                dtr = datareader.Rows[i];
                ListViewItem listItem = new ListViewItem();
                listItem.Text = dtr["ID"].ToString();
                listItem.SubItems.Add(dtr["IP"].ToString());
                listItem.SubItems.Add(dtr["Port"].ToString());
                listItem.SubItems.Add(dtr["Name"].ToString());
                listItem.SubItems.Add(dtr["Sign"].ToString());

                LV_SysUser.Items.Add(listItem);
                i++;
            }
            optiondata.Dispose();
        }
Пример #3
0
        /// <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();//更新用户列表
        }
Пример #4
0
 /// <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();
 }
Пример #5
0
        /// <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();
        }
Пример #6
0
 /// <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();
 }
Пример #7
0
 /// <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());
 }
Пример #8
0
        /// <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;
        }
Пример #9
0
 private void F_Server_FormClosed(object sender, FormClosedEventArgs e)
 {
     udpSocket1.Active = false;
     ClassOptionData OptionData = new ClassOptionData();
     OptionData.ExSQL("Update CurreneyUser Set Sign =12 Where ID >0");
     OptionData.Dispose();
 }