예제 #1
0
        /// <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);
            }
        }
예제 #2
0
 /// <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();
     }
 }
예제 #3
0
 /// <summary>
 /// 添加新消息
 /// </summary>
 /// <param name="msg"></param>
 public void addUnDealMsg(MsgContent msg)
 {
     lock (lockObj)
     {
         UnDealMsg.Add(msg);
     }
     if (MsgDealEvent != null)
     {
         MsgDealEvent(UnDealMsg.Count);
     }
 }
예제 #4
0
        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();
        }
예제 #5
0
        /// <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);
            }
        }
예제 #6
0
 /// <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);
     }
 }
예제 #7
0
 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();
 }
예제 #8
0
        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("没有目标用户。");
            }
        }
예제 #9
0
        void MsgShow(MsgContent msg)
        {
            MsgContentForm frm = new MsgContentForm(msg);

            frm.Show();
        }
예제 #10
0
 void instance_MsgEvent(MsgContent msg)
 {
     this.Invoke(new MsgEventDelegate(MsgShow), msg);
 }
예제 #11
0
 public MsgContentForm(MsgContent msgContent)
 {
     InitializeComponent();
     this.msgContent = msgContent;
 }