Example #1
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();
        }
Example #2
0
        /// <summary>
        /// 更改登录用户
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="Ip"></param>
        /// <param name="Port"></param>
        /// <returns></returns>
        private ClassMsg UpdateLoginUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)
        {
            //RegisterMsg registermsg = (RegisterMsg)new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));

            ClassOptionData OptionData = new ClassOptionData(); //创建并引用ClassOptionData
            MsgCommand      msgState   = msg.msgCommand;        //获取接收消息的命令
            String          UserName   = msg.UserName;          //登录用户名称
            String          PassWord   = msg.PassWord;          //用户密码
            String          vIP        = Ip.ToString();         //用户IP地址

            SqlDataReader DataReader = OptionData.ExSQLReDr("Select * From tb_Gobang Where UserName = "******"'" + UserName + "'" + " and PassWord = "******"'" + PassWord + "'");//在数据库中通过用户名和密码进行查找

            if (DataReader.HasRows)
            {
                DataReader.Read();                                    //读取查找到的记录
                string ID = Convert.ToString(DataReader.GetInt32(0)); //获取第一条记录中的ID字段值
                msg.Fraction = DataReader.GetInt32(5);                //获取当前用户的分数
                msg.Sex      = DataReader.GetInt32(13);               //获取当前用户性别
                //修改当前记录的标识为上线状态
                OptionData.ExSQL("Update tb_Gobang Set State = " + Convert.ToString((int)(MsgCommand.Logined)) + ",IP = " + "'" + vIP + "',Port = " + "'" + Port.ToString() + "'" + " Where ID = " + ID);
                msg.msgCommand = MsgCommand.Logined; //设置为上线命令
                SendMsgToOne(Ip, Port, msg);         //将消息返回给发送用户/////--------------------------------////
                UpdateUser();                        //更新用户列表
            }
            return(msg);
        }
Example #3
0
        /// <summary>
        /// 确定按键点击事件处理函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (this.txtPassword.Text.Trim() == this.txtPasswordVerify.Text.Trim())
            {
                RegisterMsg registermsg = new RegisterMsg();
                registermsg.UserName = this.txtUserName.Text.Trim();
                registermsg.UserName = this.txtPassword.Text.Trim();

                byte[] registerData = new ClassSerializers().SerializeBinary(registermsg).ToArray();//将用户信息对象序列化后存入Data

                //定义消息
                ClassMsg msg = new ClassMsg();
                msg.sendKind   = SendKind.SendCommand;
                msg.msgCommand = MsgCommand.Registering;
                msg.Data       = registerData;

                byte[] send_data = new ClassSerializers().SerializeBinary(msg).ToArray();//消息对象序列化
                //发送
                udpSocket1.Send(IPAddress.Parse(this.txtServer.Text.Trim()), Convert.ToInt32(txtPort.Text.Trim()), send_data);
            }
            else
            {
                this.txtPassword.Text       = "";
                this.txtPasswordVerify.Text = "";
                MessageBox.Show("密码与确认密码不匹配,请重新输入。");
            }
        }
Example #4
0
        /// <summary>
        /// 更改下棋后的分数
        /// </summary>
        private void UpdatePlayChess(ClassMsg msg, System.Net.IPAddress Ip, int Port, MsgCommand Nsign)
        {
            ClassOptionData OptionData = new ClassOptionData();

            OptionData.ExSQL("Update tb_Gobang Set Fraction =" + msg.Fraction + " Where IP ='" + msg.RIP + "'");
            UpdateUser();//更新用户列表
        }
Example #5
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();//更新用户列表
        }
Example #6
0
 private void button_OK_Click(object sender, EventArgs e)
 {
     if (text_PassWord.Text.Trim() == text_PassWord2.Text.Trim())       //当密码输入相同
     {
         udpSocket1.LocalPort = Convert.ToInt32(text_Port.Text.Trim()); //获取端口号
         udpSocket1.Active    = true;
         ClassMsg msg = new ClassMsg();                                 //引用类库中的ClassMsg类
         msg.UserName   = text_Name.Text;                               //获取注册的用户名
         msg.PassWord   = text_PassWord.Text;                           //获取用户密码
         msg.sendKind   = SendKind.SendCommand;                         //设置为发送命令
         msg.msgCommand = MsgCommand.Registering;                       //将消息命令设为用户注册
         serID          = text_IP.Text.Trim();                          //获取服务器的IP地址
         msg.RIP        = serID.Trim();                                 //获取本机的IP地址
         msg.RPort      = text_Port.Text.Trim();                        //获取端口号
         msg.CPhoto     = comboBox_CPhoto.SelectedIndex;                //获取头像的编号
         if (comboBox_Sex.SelectedIndex <= 0)                           //获取性别
         {
             msg.Sex = 0;
         }
         else
         {
             msg.Sex = 1;
         }
         //用udpSocket1控件的Send方法将消息发给服务器
         udpSocket1.Send(IPAddress.Parse(serID), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
     }
     else
     {
         text_PassWord.Text  = "";
         text_PassWord2.Text = "";
         MessageBox.Show("密码与确认密码不匹配,请重新输入。");
     }
 }
Example #7
0
        private void GetUserList(byte[] Data, System.Net.IPAddress Ip, int Port)
        {
            ClassMsg msg = (ClassMsg) new ClassSerializers().DeSerializerBinary(new MemoryStream(Data));

            users = (ClassUsers) new ClassSerializers().DeSerializerBinary(new MemoryStream(msg.Data)); //获取所有用户信息
            treeView1.Nodes.Clear();                                                                    //清空所有节点
            for (int i = 0; i < users.Count; i++)                                                       //遍历所有用户
            {
                ClassUserInfo userItem = users[i];
                TreeNode      Node     = new TreeNode();
                Node.Text = userItem.UserName;                                   //获取当前用户的名称
                Node.Tag  = userItem;
                if (userItem.State == Convert.ToString((int)MsgCommand.Logined)) //当用户为上线状态
                {
                    Node.ImageIndex         = 1;                                 //设置上线用户的图片
                    Node.SelectedImageIndex = 1;
                }
                else
                {
                    Node.ImageIndex         = 0;//设置下线用户的图片
                    Node.SelectedImageIndex = 0;
                }
                treeView1.Nodes.Add(Node);
            }
        }
Example #8
0
        private void getprivileges_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("       当前选择了:"+ dataGridView1_house.Rows[dataGridView1_house.CurrentRow.Index].Cells[0].Value , "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return;
            if (dataGridView1_house.Rows[dataGridView1_house.CurrentRow.Index].Cells[0].Value == null)
            {
                MessageBox.Show("       不能选择空行", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return;
            }
            PrivigesMsg pvMsg = new PrivigesMsg();

            pvMsg.UserName = Publec_Class.UserName;
            pvMsg.cover    = dataGridView1_house.Rows[dataGridView1_house.CurrentRow.Index].Cells[0].Value.ToString().Replace("(公司)", "");
            Publec_Class pc = new Publec_Class();

            byte[]   pvMsgData = new ClassSerializers().SerializeBinary(pvMsg).ToArray();
            ClassMsg msg       = new ClassMsg();

            msg.sendKind   = SendKind.SendCommand;
            msg.msgCommand = MsgCommand.DBPRIV;
            msg.SIP        = pc.getMacAddr_Local(0);
            msg.SPort      = this.udpSocket1.LocalPort.ToString();
            msg.Data       = pvMsgData;
            //打开socket,后台通信
            udpSocket1.Active = true;

            udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), Convert.ToInt32(Publec_Class.ServerPort), new ClassSerializers().SerializeBinary(msg).ToArray());
        }
Example #9
0
 /// <summary>
 /// 用户注册
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="Ip"></param>
 /// <param name="Port"></param>
 private void RegisterUser(ClassMsg msg, System.Net.IPAddress Ip, int Port)
 {
     if (IfRegisterAt(msg, Ip, Port) == false)
     {
         msg = InsertUser(msg, Ip, Port);
     }
 }
Example #10
0
        /// <summary>
        /// 向所有在线用户发送进入大厅及游戏的用户信息
        /// </summary>
        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_Gobang where (State>=" + Convert.ToInt32(MsgCommand.BeginToGame) + " and State<=" + Convert.ToInt32(MsgCommand.ExitToArea) + ")"); //查询进入大厅,或开始游戏的对象

            while (DataReader.Read())                                                                                                                                                                              //遍历所有用户
            {
                ClassUserInfo UserItem = new ClassUserInfo();                                                                                                                                                      //创建并引用ClassUserInfo类
                UserItem.UserID   = Convert.ToString(DataReader.GetInt32(0));                                                                                                                                      //记录用户用编号
                UserItem.UserIP   = DataReader.GetString(1);                                                                                                                                                       //记录用户的IP地址
                UserItem.UserPort = DataReader.GetString(2);                                                                                                                                                       //记录端口号
                UserItem.UserName = DataReader.GetString(3);                                                                                                                                                       //记录用户名称
                UserItem.Fraction = Convert.ToString(DataReader.GetInt32(5));                                                                                                                                      //当前分数
                UserItem.State    = Convert.ToString(DataReader.GetInt32(6));                                                                                                                                      //记录当前状态
                UserItem.Borough  = Convert.ToString(DataReader.GetInt32(7));                                                                                                                                      //区号
                UserItem.RoomMark = Convert.ToString(DataReader.GetInt32(8));                                                                                                                                      //房间号
                if (msg.msgCommand == MsgCommand.BeginToGame || DataReader.GetInt32(6) == Convert.ToInt32(MsgCommand.BeginToGame))
                {
                    UserItem.DeskMark    = DataReader.GetString(9);         //桌号
                    UserItem.SeatMart    = DataReader.GetString(10);        //坐位号
                    UserItem.UserCaption = DataReader.GetString(11);        //用户名
                }
                UserItem.Caput = Convert.ToString(DataReader.GetInt32(12)); //头像
                UserItem.Sex   = Convert.ToString(DataReader.GetInt32(13)); //头像
                Users.add(UserItem);                                        //将单用户信息添加到用户列表中
            }

            msg.Data       = new ClassSerializers().SerializeBinary(Users).ToArray();//将用户列表写入到二进制流中
            msg.msgCommand = MsgCommand.UserList;
            DataReader.Dispose();
            msg.msgCommand = MsgCommand.UserList;
            //udpSocket1.Send(Ip, Port, new ClassSerializers().SerializeBinary(msg).ToArray());
            MessColley(msg, Ip, Port, msg.msgCommand);//群发
        }
Example #11
0
 private void button_OK_Click(object sender, EventArgs e)
 {
     if (text_PassWord.Text.Trim() == text_PassWord2.Text.Trim())    //当密码输入相同
     {
         udpSocket1.LocalPort = Convert.ToInt32(text_IP5.Text.Trim());
         udpSocket1.Active    = true;
         ClassMsg msg = new ClassMsg();
         msg.UserName   = text_Name.Text;
         msg.PassWord   = text_PassWord.Text;
         msg.sendKind   = SendKind.SendCommand;
         msg.msgCommand = MsgCommand.Registering;
         serID          = text_IP.Text.Trim();
         msg.RIP        = serID.Trim();
         msg.RPort      = text_IP5.Text.Trim();
         msg.CPhoto     = comboBox_CPhoto.SelectedIndex;
         if (comboBox_Sex.SelectedIndex <= 0)
         {
             msg.Sex = 0;
         }
         else
         {
             msg.Sex = 1;
         }
         udpSocket1.Send(IPAddress.Parse(serID), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
     }
     else
     {
         text_PassWord.Text  = "";
         text_PassWord2.Text = "";
         MessageBox.Show("密码与确认密码不匹配,请重新输入。");
     }
 }
Example #12
0
        /// <summary>
        /// 删除
        /// </summary>
        private void dbconn_delete_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("   您确定要删除连接细节吗?", "安全提示",
                                System.Windows.Forms.MessageBoxButtons.YesNo,
                                System.Windows.Forms.MessageBoxIcon.Question)
                == System.Windows.Forms.DialogResult.Yes)
            {
                if (getKeyExistsDics(dbconn_comb.Text.Trim()) == null)
                {
                    MessageBox.Show("       请选择一个希望被删除的数据源!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
                DB_Map dbconn_delete = new DB_Map(this.dbconn_comb.Text.Trim(), this.dbconn_username.Text.Trim(),
                                                  this.dbconn_password.Text.Trim(), this.dbconn_ipaddr.Text.Trim(), Convert.ToInt32(this.dbconn_port.Text.Trim()), getKeyExistsDics(dbconn_comb.Text.Trim()).property, "否", Publec_Class.UserName);
                byte[]   dbconn_deleteData = new ClassSerializers().SerializeBinary(dbconn_delete).ToArray();
                ClassMsg msg = new ClassMsg();
                msg.sendKind   = SendKind.SendCommand;
                msg.msgCommand = MsgCommand.DBDelete;
                msg.SPort      = this.udpSocket1.LocalPort.ToString();
                msg.SIP        = PubClass.getMacAddr_Local(0);
                msg.Data       = dbconn_deleteData;

                udpSocket1.Send(IPAddress.Parse(PubClass.GetServerIp().Trim()), Convert.ToInt32(PubClass.GetServerPort().Trim()), new ClassSerializers().SerializeBinary(msg).ToArray());
            }
        }
Example #13
0
        /// <summary>
        /// 获取当前房间的用户信息
        /// </summary>
        /// <param Data="byte[]">数据流</param>
        /// <param Ip="System.Net.IPAddress ">IP地址</param>
        /// <param Port="int">端口号</param>
        private void GetUserList(byte[] Data, System.Net.IPAddress Ip, int Port)
        {
            ClassMsg msg = (ClassMsg) new ClassSerializers().DeSerializeBinary(new MemoryStream(Data));

            users = (ClassUsers) new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));//获取所有用户信息

            ClassUserInfo userItem = new ClassUserInfo();

            frmClient.Data_List(listView_user, Publec_Class.ClientName, Publec_Class.Fraction.ToString(), Publec_Class.CaputID.ToString());
            for (int i = 0; i < users.Count; i++)
            {
                userItem = users[i];
                if (userItem.Borough == Publec_Class.TAreaM.ToString() && userItem.RoomMark == Publec_Class.TRoomM.ToString())
                {
                    if (userItem.State == (Convert.ToInt32(MsgCommand.ComeToHall)).ToString())
                    {
                        if (Publec_Class.ClientName != userItem.UserName)
                        {
                            frmClient.Data_List(listView_user, userItem.UserName, userItem.Fraction, userItem.Caput);
                        }
                    }
                    if (userItem.State == (Convert.ToInt32(MsgCommand.BeginToGame)).ToString())
                    {
                        if (Publec_Class.ClientName != userItem.UserName)
                        {
                            frmClient.Data_List(listView_user, userItem.UserName, userItem.Fraction, userItem.Caput);
                            frmClient.UserAdd_List(flowPanel_Oppose, userItem, imageList1);
                        }
                    }
                }
            }
        }
Example #14
0
        private void button_login_click_Click(object sender, EventArgs e)
        {
            //输入参数处理
            if ((text_login_passwd.Text.Trim()).Length == 0)
            {
                MessageBox.Show("       用户密码不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return;
            }
            if (text_login_passwd.Text.Length < 6)
            {
                MessageBox.Show("       密码太短!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); return;
            }

            //传送参数到后台校验
            RegisterMsg registermsg = new RegisterMsg();

            registermsg.UserName = text_login_name.Text.Trim();
            registermsg.PassWord = text_login_passwd.Text.Trim();
            byte[]   registerData = new ClassSerializers().SerializeBinary(registermsg).ToArray();
            ClassMsg msg          = new ClassMsg();

            msg.sendKind   = SendKind.SendCommand;
            msg.msgCommand = MsgCommand.Logining;
            msg.SPort      = this.udpSocket1.LocalPort.ToString();
            msg.SIP        = PubClass.getMacAddr_Local(0);
            msg.Data       = registerData;
            udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), Convert.ToInt32(Publec_Class.ServerPort), new ClassSerializers().SerializeBinary(msg).ToArray());
            Publec_Class.UserName = text_login_name.Text;
        }
Example #15
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();
        }
Example #16
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();//更新用户列表
        }
Example #17
0
        /// <summary>
        /// 判断用户是否注册
        /// </summary>
        /// <param msg="ClassMsg"></param>
        /// <param Ip="System.Net.IPAddress"></param>
        /// <param Port="int"></param>
        /// <returns></returns>
        private bool IfRegisterAt(ClassMsg msg, System.Net.IPAddress Ip, int Port)
        {
            bool RegAt = true;
            //RegisterMsg registermsg = (RegisterMsg)new ClassSerializers().DeSerializeBinary(new MemoryStream(msg.Data));
            ClassOptionData OptionData = new ClassOptionData();
            MsgCommand      Sate       = msg.msgCommand;
            String          UserName   = msg.UserName;  //注册用户的名称
            String          PassWord   = msg.PassWord;  //注册用户的密码
            String          vIP        = Ip.ToString(); //注册用户的IP地址
            SqlDataReader   DataReader;

            //查找注册用户
            DataReader = OptionData.ExSQLReDr("Select * From tb_Gobang where UserName="******"'" + UserName + "'");
            if (DataReader.Read())
            {
                RegAt          = true;
                msg.msgCommand = MsgCommand.RegisterAt; //存在注册用户
                SendMsgToOne(Ip, Port, msg);            //将注册命令返回给注册用户
            }
            else
            {
                DataReader = OptionData.ExSQLReDr("Select * From tb_Gobang where IP=" + "'" + Ip.ToString() + "'");
                if (DataReader.Read())
                {
                    OptionData.ExSQL("Delete tb_Gobang where IP=" + "'" + Ip.ToString() + "'");
                }

                RegAt          = false;
                msg.msgCommand = MsgCommand.Registered;//用户注册结束命令
            }
            return(RegAt);
        }
Example #18
0
        private void GetUserList()
        {
            ClassMsg msg = new ClassMsg();

            msg.sendKind   = SendKind.SendCommand;
            msg.msgCommand = MsgCommand.UserList;
            udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), Convert.ToInt32(Publec_Class.ServerPort), new ClassSerializers().SerializerBinary(msg).ToArray());
        }
Example #19
0
 /// <summary>
 /// 将消息返回给发送用户
 /// </summary>
 private void SendMsgToOne(System.Net.IPAddress ip, int port, ClassMsg msg)//发送消息给一个用户
 {
     try
     {
         udpSocket1.Send(ip, port, new ClassSerializers().SerializeBinary(msg).ToArray());
     }
     catch { }
 }
Example #20
0
        /// <summary>
        /// 获取玩家的分数
        /// </summary>
        private void GameF(ClassMsg msg, System.Net.IPAddress Ip, int Port, MsgCommand Nsign)
        {
            ClassOptionData OptionData = new ClassOptionData();
            SqlDataReader   DataReader = OptionData.ExSQLReDr("Select Fraction From tb_Gobang where (IP=" + msg.RIP.Trim() + ")"); //查询进入大厅,或开始游戏的对象

            DataReader.Read();                                                                                                     //读取玩家信息

            msg.Fraction = DataReader.GetInt32(0);                                                                                 //记录用户的IP地址
            udpSocket1.Send(Ip, Port, new ClassSerializers().SerializeBinary(msg).ToArray());
        }
Example #21
0
 private void SendMsgToOne(System.Net.IPAddress ip, int port, ClassMsg msg)//发送消息给一个用户
 {
     try
     {
         System.IO.MemoryStream stream = new ClassSerializers().SerializerBinary(msg);
         QQClass.UDPSocket      udp    = new QQClass.UDPSocket();
         udp.Send(ip, port, stream.ToArray());
     }
     catch { }
 }
Example #22
0
 /// <summary>
 /// 添加语聊的信息
 /// </summary>
 /// <param RTX="RichTextBox">RichTextBox控件</param>
 /// <param CUInfo="ClassMsg">发送的信息</param>
 /// <param MsgSign="MsgCommand">消息命令</param>
 public void AddMsgText(RichTextBox RTX, ClassMsg CUInfo, MsgCommand MsgSign)
 {
     RTX.ReadOnly  = true;            //设为只读
     RTX.ForeColor = Color.SlateGray; //设置字体颜色
     RTX.AppendText(CUInfo.UserName); //添加发送信息的用户名
     RTX.AppendText("\r\n");          //换行
     RTX.AppendText(CUInfo.MsgText);  //添加发送的信息
     RTX.AppendText("\r\n");          //换行
     RTX.ScrollToCaret();             //将信息添加到控件
 }
Example #23
0
        private void GetVoid(byte[] Data, System.Net.IPAddress IP, int Port)
        {
            ClassMsg msg   = (ClassMsg) new ClassSerializers().DeSerializerBinary(new MemoryStream(Data));
            string   sid   = msg.SID;   //发送方用户ID
            string   msgid = msg.msgID; //消息标识,GUID

            switch (msg.msgCommand)
            {
            case MsgCommand.Videoing:    //发送的消息
            {
                switch (msg.sendState)   //消息发送的状态
                {
                case SendState.Start:
                {
                    FileStream fs = null;
                    try
                    {
                        string FileName = "c:\\Void.bmp";          //设置文件接收路径
                        fs = File.Create(FileName);                //创建文件
                        fs.Write(msg.Data, 0, msg.Data.Length);    //向文件中写入接收物信息
                    }
                    finally
                    {
                        fs.Close();                //关闭文件
                    }
                    break;
                }

                case SendState.Sending:
                {
                    FileStream fs = null;
                    try
                    {
                        string FileName = "c:\\Void.bmp";          //设置文件接收路径
                        fs = File.OpenWrite(FileName);             //打开当前要写入的文件
                        fs.Seek(0, SeekOrigin.End);                //将该流的当前位值设为0
                        fs.Write(msg.Data, 0, msg.Data.Length);    //向文件中写入当前接收的信息
                    }
                    finally
                    {
                        fs.Close();
                    }
                    break;
                }

                case SendState.End:
                {
                    pictureBox2.Load("c:\\Void.bmp");
                    break;
                }
                }
            }
            break;
            }
        }
Example #24
0
        private void treeView_Area_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            ClientClass CClass   = new ClientClass();                               //创建ClientClass对象
            string      TemNodeS = e.Node.Name;                                     //获取当前节点的名称
            TreeNode    tNode    = new TreeNode();                                  //定义一个节点

            if (TemNodeS.IndexOf("Room_") >= 0)                                     //查找节点名中是否有指定的字符串
            {
                tNode = e.Node;                                                     //获取当前节点中的所有信息
                Publec_Class.TRoomM = Convert.ToInt32(tNode.Tag.ToString());        //获取当前节点的房间号
                TreeNode t2Node = new TreeNode();                                   //定义一个节点
                t2Node = (TreeNode)tNode.Parent;                                    //获取当前节点的父节点信息
                Publec_Class.TAreaM = Convert.ToInt32(t2Node.Tag.ToString());       //获取当前房间所在区号
                if (IAreaM == Publec_Class.TAreaM && IRoomM == Publec_Class.TRoomM) //如果进入的是同一个房间
                {
                    return;
                }

                if (Publec_Class.TAreaM > 0 && Publec_Class.TRoomM > 0) //如果进入了房间
                {
                    ClassMsg TeMsg = new ClassMsg();                    //创建ClassMsg对象
                    TeMsg.sendKind   = SendKind.SendCommand;            //将命令设置为发送命令
                    TeMsg.msgCommand = MsgCommand.ExitToArea;           //消息设为ExitToArea
                    TeMsg.AreaMark   = IAreaM.ToString();               //记录当前的区号
                    TeMsg.RoomMark   = IRoomM.ToString();               //记录当前的房间号
                    TeMsg.UserName   = Publec_Class.UserName;           //记录当前用户的名称
                    //将信息发送给服务器端
                    udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(TeMsg).ToArray());
                }

                if (pictureBox_Back.Visible == true)  //如果大厅中的页面图片为显示状态
                {
                    pictureBox_Back.Visible  = false; //隐藏该图片
                    flowPanel_Oppose.Visible = true;  //显示房间的所有座位
                }

                //设置要传递的信息
                ClassMsg msg = new ClassMsg();
                msg.AreaMark   = Publec_Class.TAreaM.ToString(); //记录区号
                msg.RoomMark   = Publec_Class.TRoomM.ToString(); //记录房间号
                msg.RIP        = PubClass.MyHostIP();            //记录当前用户的IP地址
                msg.RPort      = Publec_Class.ServerPort;        //记录当前用户的端口号
                msg.SIP        = Publec_Class.ServerIP;          //记录服务器端的IP地址
                msg.SPort      = "11000";                        //记录服务器端的端口号
                msg.sendKind   = SendKind.SendCommand;           //设置为发送命令
                msg.msgCommand = MsgCommand.ComeToHall;          //设置消息为进入大厅
                msg.CPhoto     = Publec_Class.CaputID;           //记录头像编号
                //发送消息
                udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
                CClass.SetLabelModule(flowPanel_Oppose, imageList1); //对组件进行批量操作
                //记录区号和房间号,用于判断进入的房间是否为同一区的同一个房间,如果是,则不进行操作
                IAreaM = Publec_Class.TAreaM;                        //记录区号
                IRoomM = Publec_Class.TRoomM;                        //记录房间号
            }
        }
Example #25
0
        private void treeView_Area_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            ClientClass CClass   = new ClientClass();
            string      TemNodeS = e.Node.Name;
            TreeNode    tNode    = new TreeNode();

            if (TemNodeS.IndexOf("Room_") >= 0)
            {
                tNode = e.Node;
                Publec_Class.TRoomM = Convert.ToInt32(tNode.Tag.ToString());
                TreeNode t2Node = new TreeNode();
                t2Node = (TreeNode)tNode.Parent;
                Publec_Class.TAreaM = Convert.ToInt32(t2Node.Tag.ToString());
                if (IAreaM == Publec_Class.TAreaM && IRoomM == Publec_Class.TRoomM)//如果进入的是同一个房间
                {
                    return;
                }

                if (Publec_Class.TAreaM > 0 && Publec_Class.TRoomM > 0)
                {
                    //listView_user.Items.Clear();
                    ClassMsg TeMsg = new ClassMsg();
                    TeMsg.sendKind   = SendKind.SendCommand;
                    TeMsg.msgCommand = MsgCommand.ExitToArea;
                    TeMsg.AreaMark   = IAreaM.ToString();
                    TeMsg.RoomMark   = IRoomM.ToString();
                    TeMsg.UserName   = Publec_Class.UserName;
                    udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(TeMsg).ToArray());
                }

                if (pictureBox_Back.Visible == true)
                {
                    pictureBox_Back.Visible  = false;
                    flowPanel_Oppose.Visible = true;
                    //frmClient.BrushChar(panel_Public);
                }

                //设置要传递的信息
                ClassMsg msg = new ClassMsg();
                msg.AreaMark   = Publec_Class.TAreaM.ToString();
                msg.RoomMark   = Publec_Class.TRoomM.ToString();
                msg.RIP        = PubClass.MyHostIP();
                msg.RPort      = Publec_Class.ServerPort;
                msg.SIP        = Publec_Class.ServerIP;
                msg.SPort      = "11000";
                msg.sendKind   = SendKind.SendCommand;
                msg.msgCommand = MsgCommand.ComeToHall;
                msg.CPhoto     = Publec_Class.CaputID;
                //发送消息
                udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
                CClass.SetLabelModule(flowPanel_Oppose, imageList1);
                IAreaM = Publec_Class.TAreaM;
                IRoomM = Publec_Class.TRoomM;
            }
        }
Example #26
0
 private void SendMsgToOne(IPAddress ip, int port, ClassMsg msg)
 {
     try
     {
         MemoryStream stream = new ClassSerializers().SerializeBinary(msg);
         UDPSocket    udp    = new UDPSocket();
         udp.Send(ip, port, stream.ToArray());
     }
     catch
     { }
 }
Example #27
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     if (Voiding || !SendViod || pictureBox1.Image != null)
     {
         SendViod = true;
         IPAddress ip    = IPAddress.Parse(((this.Tag as TreeNode).Tag as ClassUserInfo).UserIP);
         string    port  = "11005";
         string    revid = ((this.Tag as TreeNode).Tag as ClassUserInfo).UserID;
         string    sid   = Publec_Class.UserID; //发送ID
         ClassMsg  msg   = new ClassMsg();
         msg.sendKind   = SendKind.SendCommand; //发送的消息
         msg.msgCommand = MsgCommand.Videoing;  //发送的是单用户信息
         msg.sendState  = SendState.Sending;
         msg.SID        = sid;                  //发送ID
         msg.RID        = revid;                //接收ID
         msg.Data       = Encoding.Unicode.GetBytes("");
         ClassMsg start = new ClassMsg();
         start.sendKind   = SendKind.SendCommand;
         start.sendState  = SendState.Start;
         start.msgCommand = MsgCommand.Videoing;
         start.SID        = sid;
         start.RID        = revid;
         start.Data       = Encoding.Unicode.GetBytes("");
         udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializerBinary(start).ToArray());
         video.GrabImage(pictureBox1.Handle, "C:\\tempVoid.Bmp");
         FileStream stream  = File.OpenRead("C:\\tempVoid.Bmp");
         int        sendlen = 1024;
         long       sunlen  = stream.Length;
         int        offset  = 0;
         while (sunlen > 0)
         {
             if (sunlen <= sendlen)
             {
                 sendlen = Convert.ToInt32(sunlen);
             }
             byte[] msgdata = new byte[sendlen];    //创建一个1024大小的二进制流
             stream.Read(msgdata, offset, sendlen); //读取要发送的字节块
             msg.sendState = SendState.Sending;     //发送状态为文件发送中
             msg.Data      = msgdata;
             udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializerBinary(msg).ToArray());
             sunlen = sunlen - sendlen;//记录下一块的起始位置
         }
         ClassMsg end = new ClassMsg();
         end.sendKind   = SendKind.SendCommand;
         end.sendState  = SendState.End;
         end.msgCommand = MsgCommand.Videoing;
         end.SID        = sid;
         end.RID        = revid;
         end.Data       = Encoding.Unicode.GetBytes("");
         stream.Close();
         udpsocket.Send(ip, Convert.ToInt32(port), new ClassSerializers().SerializerBinary(end).ToArray());
         SendViod = false;
     }
 }
Example #28
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();
        }
Example #29
0
        /// <summary>
        /// 发送消息给单用户
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="Ip"></param>
        /// <param name="Port"></param>
        private void SendUserMsg(ClassMsg msg, System.Net.IPAddress Ip, int Port)
        {
            ClassOptionData OptionData = new ClassOptionData();
            SqlDataReader   DataReader = OptionData.ExSQLReDr("Select * From tb_Gobang 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());
            DataReader.Dispose();
        }
Example #30
0
        private void Image_Close_Click(object sender, EventArgs e)
        {
            ClassMsg msg = new ClassMsg();//实例化ClassMsg类

            msg.UserName = Publec_Class.ClientName;
            msg.RoomMark = Publec_Class.TRoomM.ToString();
            msg.AreaMark = Publec_Class.TAreaM.ToString();

            msg.sendKind   = SendKind.SendCommand;  //当前为消息发送命令
            msg.msgCommand = MsgCommand.ExitToHall; //退出大厅
            //发送消息
            udpSocket1.Send(IPAddress.Parse(Publec_Class.ServerIP.Trim()), 11000, new ClassSerializers().SerializeBinary(msg).ToArray());
        }