⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f_server.cs

📁 01_家庭视频监控系统 02_企业短信群发系统 03_企业电话客服系统 04_卡拉OK点歌系统 05_企业QQ系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
            UpdateUserList(msg, Ip, Port);
        }

        /// <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().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 tb_CurreneyUser (IP,Port,Name,PassWord,Sign) values ('" + vIP + "'," +
                Port.ToString() + ",'" + UserName + "','" + PassWord + "'," + Convert.ToString((int)(MsgCommand.Registered)) + ")");
            SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser");
            UpdateUser();//更新用户列表
            OptionData.Dispose();
            msg.msgCommand =  MsgCommand.Registered;//用户注册结束命令
            SendMsgToOne(Ip,Port,msg);//将注册命令返回给注册用户
            return msg;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            UpdateUser();//加载用户列表
            //udpSocket1.Active = true;
        }


        /// <summary>
        /// 更新用户列表
        /// </summary>
        private void UpdateUser()
        {
            ClassOptionData OptionData = new ClassOptionData();
            SqlDataReader DataReader = OptionData.ExSQLReDr("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();
        }

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

        }

        private void udpSocket1_DataArrival(byte[] Data, IPAddress Ip, int Port)
        {
            DataArrivaldelegate outdelegate = new DataArrivaldelegate(DataEvent);
            this.BeginInvoke(outdelegate, new object[] { Data, Ip, Port }); 

        }

        private void DataEvent(byte[] Data, System.Net.IPAddress Ip, int Port)
        {
            //MessageBox.Show(Encoding.Unicode.GetString(Data));
            //this.Text = Encoding.Unicode.GetString(Data);
            //MessageBox.Show(this.Text);
        }


        /// <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.ExSQLReDr("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().SerializeBinary(Users).ToArray();
            udpSocket1.Send(Ip,Port,new ClassSerializers().SerializeBinary(msg).ToArray());
        }

        private void UpdateUserList(ClassMsg msg, System.Net.IPAddress Ip, int Port)
        {
            ClassUsers Users = new ClassUsers();
            ClassOptionData OptionData = new ClassOptionData();
            SqlDataReader DataReader = OptionData.ExSQLReDr("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().SerializeBinary(Users).ToArray();//将用户列表写入到二进制流中
            //查找当前已上线的用户
            DataReader = OptionData.ExSQLReDr("Select * From tb_CurreneyUser Where Sign = "+ MsgCommand.Logined);
            while (DataReader.Read())//向所有上线用户发送用户列表
            {

                udpSocket1.Send(IPAddress.Parse(DataReader.GetString(1)), DataReader.GetInt32(2), new ClassSerializers().SerializeBinary(msg).ToArray());
            }
            OptionData.Dispose();
        }

        private void SendUserMsg(ClassMsg msg, System.Net.IPAddress Ip, int Port)
        {
            ClassOptionData OptionData = new ClassOptionData();
            SqlDataReader DataReader = OptionData.ExSQLReDr("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().SerializeBinary(msg).ToArray());
            OptionData.Dispose();
            DataReader.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.ExSQLReDr("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().SerializeBinary(msg).ToArray());
            }
            OptionData.Dispose();
            UpdateUser();
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -