Пример #1
0
        /// <summary>
        /// 处理接收图片文件 
        /// </summary>
        /// <param name="msg"></param>
        private void onTCPImageFile(ImageFileMsg msg)
        {
            exUser user = findUser(msg.from);
            if (user == null) return;
            if (user.UserID == MyAuth.UserID) return;//如果是自己发送给自己的消息,则不处理

            System.IO.DirectoryInfo dInfo = new System.IO.DirectoryInfo(MyAuth.UserID + "\\ArrivalImage");
            if (!dInfo.Exists)
                dInfo.Create();

            string fileName = MyAuth.UserID + "\\ArrivalImage\\" + msg.MD5 + msg.Extension;

            if (System.IO.File.Exists(fileName)) return;//如果本地已经有此文件已经存在,则退出(不接收文件)

            TFileInfo fileinfo = new TFileInfo();
            fileinfo.MD5 = msg.MD5;
            fileinfo.Length = msg.Length;
            fileinfo.Extension = msg.Extension;
            fileinfo.fullName = fileName;

            if (msg.MessageType == IMLibrary3.Enmu.MessageType.User)//如果图片发送给用户
            {
                ImageFileClient tcpfile = new ImageFileClient(Global.ImageServerEP, fileinfo);
                tcpfile.fileTransmitted += delegate(object sender, fileTransmitEvnetArgs e)
                {
                    FormTalkUser fs = user.Tag as FormTalkUser;
                    if (fs != null)
                    {
                        List<MyPicture> needRecPics = fs.GetNeedRecPicture();
                        foreach (MyPicture pic in needRecPics)
                            if (pic.MD5 == e.fileInfo.MD5)
                            {
                                needRecPics.Remove(pic);
                                pic.Image = System.Drawing.Image.FromFile(e.fileInfo.fullName);
                                fs.Invalidate();
                            }
                    }
                    (sender as ImageFileClient).Dispose();
                    sender = null;
                };
            }
            else if (msg.MessageType == IMLibrary3.Enmu.MessageType.Group)//如果图片发送给群
            {

                exRoom room = findRoom(msg.to);//获得消息接收群
                if (room == null) return;
                FormTalkRoom fs = room.Tag as FormTalkRoom;

                ImageFileClient tcpfile = new ImageFileClient(Global.ImageServerEP, fileinfo);
                tcpfile.fileTransmitted += delegate(object sender, fileTransmitEvnetArgs e)
                {
                    if (fs != null)
                    {
                        List<MyPicture> needRecPics = fs.GetNeedRecPicture();
                        foreach (MyPicture pic in needRecPics)
                            if (pic.MD5 == e.fileInfo.MD5)
                            {
                                needRecPics.Remove(pic);
                                pic.Image = System.Drawing.Image.FromFile(e.fileInfo.fullName);
                                fs.Invalidate();
                            }
                    }
                    (sender as ImageFileClient).Dispose();
                    sender = null;
                };
            } 
        }
Пример #2
0
        private void MessagePanel1_CreateMsgAfter(object sender, IMLibrary3.Protocol.Message Message)
        {
            Message.MessageType = IMLibrary3.Enmu.MessageType.Group;//消息类型为组对话
            Message.from = myUserID;
            Message.to   = Room.RoomID;//将群组编号存入Tag
            if (SendMsgToGroup != null)
                SendMsgToGroup(Message, Room);
            this.MsgToRichTextBox(Message, true);

            #region 发送截图
            List<IMLibrary3.MyPicture> pictures = MessagePanel1.GetSendPicture();
            if (pictures != null)//如果文件是截图
                foreach (IMLibrary3.MyPicture pic in pictures)
                    if (pic.MD5.Length == 32)
                    {
                        string fileName =myUserID  + "\\sendImage\\" + pic.MD5 + ".gif";
                        ImageFileClient tcpFile = new ImageFileClient(Global.ImageServerEP, fileName);//发送图片文件到服务器
                        tcpFile.fileTransmitted += delegate(object sender1, fileTransmitEvnetArgs e)
                        {
                            if (SendMsgToGroup != null)
                            {
                                IMLibrary3.Protocol.ImageFileMsg fileMsg = new IMLibrary3.Protocol.ImageFileMsg();
                                fileMsg.from = myUserID;
                                fileMsg.to = Room.RoomID;
                                fileMsg.MessageType = IMLibrary3.Enmu.MessageType.Group;
                                fileMsg.Name = "";
                                fileMsg.MD5 = e.fileInfo.MD5;
                                fileMsg.Extension = e.fileInfo.Extension;
                                fileMsg.Length = e.fileInfo.Length;
                                SendMsgToGroup(fileMsg, Room);
                            }
                            (sender1 as ImageFileClient).Dispose();
                            sender1 = null;
                        };
                    }
            #endregion

            this.MessagePanel1.ClearMsgTextBox();
        }
Пример #3
0
        private void MessagePanel1_CreateMsgAfter(object sender, IMLibrary3.Protocol.Message msg)
        {
            if (User.UserID == myUserID)
            {
                IMLibrary3.Global.MsgShow("不能给自己发送消息");
                return;
            }

            msg.MessageType = IMLibrary3.Enmu.MessageType.User;

            if (SendMsgToUser != null)
                SendMsgToUser(msg, User);
            this.MsgToRichTextBox(msg, true);

            #region 发送截图
            List<IMLibrary3.MyPicture> pictures = MessagePanel1.GetSendPicture();
            if (pictures != null )//如果文件是截图
                foreach (IMLibrary3.MyPicture pic in pictures)
                    if (pic.MD5.Length == 32)
                    {
                        string fileName = myUserID + "\\sendImage\\" + pic.MD5 + ".gif";
                        ImageFileClient tcpFile = new ImageFileClient(Global.ImageServerEP, fileName);//发送图片文件到服务器
                        tcpFile.fileTransmitted += delegate(object sender1, fileTransmitEvnetArgs e)
                        {
                            if (SendMsgToUser != null)
                            {
                                IMLibrary3.Protocol.ImageFileMsg fileMsg = new IMLibrary3.Protocol.ImageFileMsg();
                                fileMsg.MessageType = IMLibrary3.Enmu.MessageType.User;
                                fileMsg.Name = "";
                                fileMsg.MD5 = e.fileInfo.MD5;
                                fileMsg.Extension = e.fileInfo.Extension;
                                fileMsg.Length = e.fileInfo.Length;
                                SendMsgToUser(fileMsg, User);
                            }
                            (sender1 as ImageFileClient).Dispose();
                            sender1 = null;
                        };
                    }
            #endregion

            this.MessagePanel1.ClearMsgTextBox();
        }