/// <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> /// <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); }
/// <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("密码与确认密码不匹配,请重新输入。"); } }
/// <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();//更新用户列表 }
/// <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 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("密码与确认密码不匹配,请重新输入。"); } }
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); } }
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()); }
/// <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); } }
/// <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);//群发 }
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("密码与确认密码不匹配,请重新输入。"); } }
/// <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()); } }
/// <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); } } } } }
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; }
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> /// <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 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); }
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()); }
/// <summary> /// 将消息返回给发送用户 /// </summary> private void SendMsgToOne(System.Net.IPAddress ip, int port, ClassMsg msg)//发送消息给一个用户 { try { udpSocket1.Send(ip, port, new ClassSerializers().SerializeBinary(msg).ToArray()); } catch { } }
/// <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()); }
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 { } }
/// <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(); //将信息添加到控件 }
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; } }
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; //记录房间号 } }
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; } }
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 { } }
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; } }
/// <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(); }
/// <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(); }
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()); }