/// <summary> /// 重置未处理消息集合 /// </summary> /// <param name="msgCollection"></param> public void resetUnDealMsg() { List <MsgContent> msgCollection = new List <MsgContent>(); if (LtznUserManager.instance.CurrentUser != null) { OracleConnection conn = new OracleConnection(Properties.Settings.Default.ltznConnectionString); conn.Open(); string sql = "select LTMSG.ID,SENDUSER,SENDTIME,TYP,CONTENT,LTUSERMSG.USERNAME from LTMSG,LTUSERMSG where LTMSG.ID=LTUSERMSG.MSGID and LTUSERMSG.USERNAME=:USERNAME and LTUSERMSG.CHK=0"; OracleCommand cmd = new OracleCommand(sql, conn); cmd.Parameters.Add(":USERNAME", OracleType.VarChar).Value = LtznUserManager.instance.CurrentUser.Identity.Name; OracleDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { MsgContent mc = new MsgContent(); mc.MsgId = dr.IsDBNull(0) ? "" : dr.GetString(0); mc.SendUser = dr.IsDBNull(1) ? "" : dr.GetString(1); mc.SendTime = dr.IsDBNull(2) ? DateTime.MinValue : dr.GetDateTime(2); mc.MsgTyp = dr.IsDBNull(3) ? "" : dr.GetString(3); mc.SendContent = dr.IsDBNull(4) ? "" : dr.GetString(4); mc.MyUser = dr.IsDBNull(5) ? "" : dr.GetString(5); msgCollection.Add(mc); } dr.Close(); conn.Close(); } lock (lockObj) { UnDealMsg = msgCollection; } if (MsgDealEvent != null) { MsgDealEvent(UnDealMsg.Count); } }
/// <summary> /// 处理新消息 /// </summary> /// <param name="id"></param> private void readMsg(object id) { if (MsgEvent != null) { OracleConnection conn = new OracleConnection(Properties.Settings.Default.ltznConnectionString); conn.Open(); string sql = "select SENDUSER,SENDTIME,TYP,CONTENT from LTMSG where ID=:MSGID"; OracleCommand cmd = new OracleCommand(sql, conn); cmd.Parameters.Add(":MSGID", OracleType.VarChar).Value = (string)id; OracleDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { MsgContent mc = new MsgContent(); mc.MsgId = (string)id; mc.SendUser = dr.IsDBNull(0) ? "" : dr.GetString(0); mc.SendTime = dr.IsDBNull(1) ? DateTime.MinValue : dr.GetDateTime(1); mc.MsgTyp = dr.IsDBNull(2) ? "" : dr.GetString(2); mc.SendContent = dr.IsDBNull(3) ? "" : dr.GetString(3); if (LtznUserManager.instance.CurrentUser != null) { mc.MyUser = LtznUserManager.instance.CurrentUser.Identity.Name; addUnDealMsg(mc); } else { mc.MyUser = ""; } MsgEvent(mc); } dr.Close(); conn.Close(); } }
/// <summary> /// 添加新消息 /// </summary> /// <param name="msg"></param> public void addUnDealMsg(MsgContent msg) { lock (lockObj) { UnDealMsg.Add(msg); } if (MsgDealEvent != null) { MsgDealEvent(UnDealMsg.Count); } }
private void button1_Click(object sender, EventArgs e) { MsgContent msgContentTemp = new MsgContent(); msgContentTemp.SendUser = LtznUserManager.instance.CurrentUser.Identity.Name; msgContentTemp.ToUser = this.msgContent.SendUser; msgContentTemp.MsgTyp = "回复"; msgContentTemp.SendContent = txtHuifu.Text.TrimEnd(); msgContentTemp.ByMsg = this.msgContent.MsgId; UDPListener.instance.sendMsg(msgContentTemp); UDPListener.instance.DealMsg(this.msgContent); this.Close(); }
/// <summary> /// 发送消息 /// </summary> /// <param name="msg"></param> public void sendMsg(MsgContent msg) { Guid msgGuid = Guid.NewGuid(); msg.MsgId = msgGuid.ToString(); OracleConnection conn = new OracleConnection(Properties.Settings.Default.ltznConnectionString); conn.Open(); string sql = "Insert into LTMSG(ID,SENDUSER,TOUSER,TYP,SENDTIME,CONTENT,BYMSG) values(:MSGID,:SendUser,:ToUser,:Typ,sysdate,:Content,:ByMsg)"; OracleCommand cmd = new OracleCommand(sql, conn); cmd.Parameters.Add(":MSGID", OracleType.VarChar).Value = msg.MsgId; cmd.Parameters.Add(":SendUser", OracleType.VarChar).Value = msg.SendUser; cmd.Parameters.Add(":ToUser", OracleType.VarChar).Value = msg.ToUser; cmd.Parameters.Add(":Typ", OracleType.VarChar).Value = msg.MsgTyp; cmd.Parameters.Add(":Content", OracleType.VarChar).Value = msg.SendContent; cmd.Parameters.Add(":ByMsg", OracleType.VarChar).Value = msg.ByMsg; cmd.ExecuteNonQuery(); List <string> userList = new List <string>(); userList.AddRange(msg.ToUser.Split(',')); foreach (string user in userList) { OracleCommand cmdUserMsg = new OracleCommand("Insert into LTUSERMSG(USERNAME,MSGID) values(:USERNAME,:MSGID) ", conn); cmdUserMsg.Parameters.Add(":USERNAME", OracleType.VarChar).Value = user; cmdUserMsg.Parameters.Add(":MSGID", OracleType.VarChar).Value = msg.MsgId; cmdUserMsg.ExecuteNonQuery(); } conn.Close(); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); List <string> broadIps = new List <string>(); IPAddress localIp = IPAddress.Parse("192.168.38.59"); string[] ipStr = localIp.ToString().Split('.'); string broadIpStr = ipStr[0] + "." + ipStr[1] + "." + ipStr[2] + ".255"; if (!broadIps.Contains(broadIpStr)) { broadIps.Add(broadIpStr); IPAddress broadcast = IPAddress.Parse(broadIpStr); byte[] sendbuf = Encoding.Unicode.GetBytes(msg.MsgId + '|' + msg.ToUser); IPEndPoint ep = new IPEndPoint(broadcast, listenPort); s.SendTo(sendbuf, ep); } }
/// <summary> /// 处理消息 /// </summary> /// <param name="msg"></param> public void DealMsg(MsgContent msg) { lock (lockObj) { OracleConnection conn = new OracleConnection(Properties.Settings.Default.ltznConnectionString); conn.Open(); string sql = "Update LTUSERMSG Set Chk=1 Where USERNAME=:USERNAME and MSGID=:MSGID"; OracleCommand cmd = new OracleCommand(sql, conn); cmd.Parameters.Add(":USERNAME", OracleType.VarChar).Value = msg.MyUser; cmd.Parameters.Add(":MSGID", OracleType.VarChar).Value = msg.MsgId; cmd.ExecuteNonQuery(); conn.Close(); UnDealMsg.Remove(msg); } if (MsgDealEvent != null) { MsgDealEvent(UnDealMsg.Count); } }
private void listView1_DoubleClick(object sender, EventArgs e) { if (listView1.SelectedItems.Count > 0) { MsgContent msgcontent = null; foreach (MsgContent msg in UDPListener.instance.UnDealMsg) { if (listView1.SelectedItems.ContainsKey(msg.MsgId)) { msgcontent = msg; break; } } if (msgcontent != null) { MsgContentForm frm = new MsgContentForm(msgcontent); frm.ShowDialog(); } } loadUnDealMsg(); }
private void btnSend_Click(object sender, EventArgs e) { string tousers = ""; foreach (string user in lstToUsers.Items) { tousers += user + ","; } if (tousers.Length > 0) { tousers = tousers.Remove(tousers.Length - 1, 1); string typ = ""; foreach (Control control in grpTyps.Controls) { if (control.GetType() == typeof(RadioButton)) { if (((RadioButton)control).Checked) { typ = ((RadioButton)control).Text; break; } } } MsgContent msgContent = new MsgContent(); msgContent.SendUser = LtznUserManager.instance.CurrentUser.Identity.Name; msgContent.ToUser = tousers; msgContent.MsgTyp = typ; msgContent.SendContent = txtContent.Text.TrimEnd(); UDPListener.instance.sendMsg(msgContent); txtContent.Text = ""; } else { MessageBox.Show("没有目标用户。"); } }
void MsgShow(MsgContent msg) { MsgContentForm frm = new MsgContentForm(msg); frm.Show(); }
void instance_MsgEvent(MsgContent msg) { this.Invoke(new MsgEventDelegate(MsgShow), msg); }
public MsgContentForm(MsgContent msgContent) { InitializeComponent(); this.msgContent = msgContent; }