/// <summary>
        /// ���ô����ļ�����
        /// </summary>
        /// <param name="isSend">��ʶ�ļ��Ƿ��ͻ��ǽ���</param>
        /// <param name="FullFileName">��������ļ���������Ҫ���ŵ��ļ�·��</param>
        /// <param name="FileName">�ļ���</param>
        /// <param name="FileLen">�ļ�����</param>
        /// <param name="fileExtension">�ļ���չ��</param>
        /// <param name="FileMD5Value">�ļ�MD5ֵ</param>
        /// <param name="ServerIP">������IP��ַ</param>
        /// <param name="ServerUDPPort">������UDP����˿�</param>
        /// <param name="ServerTCPPort">������TCP����˿�</param>
        /// <param name="selfUserInfo">�Լ��������û���Ϣ</param>
        /// <param name="OppositeUserInfo">�Է��������û���Ϣ</param>
        public void SetParameter(bool IsSend, string FullFileName, string FileName, int FileLen, string fileExtension, string FileMD5Value,UserInfo selfUserInfo, UserInfo OppositeUserInfo)
        {
            //�ļ�����ǰ����˫�����ӵIJ������ú���
            this._IsSend = IsSend;
            //this._serverIp = ServerIP;//��ȡ������IP��ַ
            //this._serverUDPPort = ServerUDPPort;//��ȡ�ļ�������UDP����˿�
            //this._serverTCPPort = ServerTCPPort;//��ȡ�ļ�������TCP����˿�
            this.Extension = fileExtension;//��ȡ�ļ���չ��
            this._FileLen = FileLen;//��ȡ�ļ�����
            this._fileName = FileName;//�ļ�����
            this.FileMD5Value = FileMD5Value;//��ȡ�ļ���MD5ֵ
            this._selfUserInfo = selfUserInfo;//��ȡ�Լ��������û���Ϣ
            this._OppositeUserInfo = OppositeUserInfo;//��ȡ�Է��������û���Ϣ

            this.FileLenStr = Calculate.GetSizeStr(FileLen);//����ļ��ߴ��ַ���

            this.readFileCount = FileLen / this.maxReadWriteFileBlock;//����ļ���д����

            if (FileLen % this.maxReadWriteFileBlock != 0)
                this.readFileCount++;//�����д�ļ����࣬�����д������1

            if (_IsSend)//������ļ�������
                this._fullFileName  = FullFileName;//���ļ��ľ���·��
        }
Example #2
0
 /// <summary>
 /// 保存地址的地址
 /// </summary>
 /// <param name="user"></param>
 public void SetLocalAddress(UserInfo user)
 {
     aVcommunicationEx1._selfUserInfo = user;
 }
Example #3
0
 /// <summary>
 /// 设置远程视频访问的端口和地址
 /// </summary>
 /// <param name="user"></param>
 /// <param name="VideoRemotUDPPort"></param>
 public void SetRemoteAddress(UserInfo user, int VideoRemotUDPPort)
 {
     aVcommunicationEx1.OppositeUDPPort = VideoRemotUDPPort;
     aVcommunicationEx1._OppositeUserInfo = user;
 }
Example #4
0
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            try
            {
                Util.ChatForms.Remove(TO_Jid.Bare);
            }
            catch (Exception)
            {

            }

            try
            {
                XmppConn.MessageGrabber.Remove(TO_Jid);
            }
            catch (Exception)
            {

            }

            try
            {
                udpReceiveFile.Dispose();
                udpReceiveFile = null;
            }
            catch (Exception)
            {

            }

            try
            {
                udpSendFile.Dispose();
                udpSendFile = null;
            }
            catch (Exception)
            {

            }

            RTBRecord.Dispose();
            RTBRecord = null;

            rtfSend.Dispose();
            rtfSend = null;

            if (QQcm_send_key != null)
            {
                QQcm_send_key.Dispose();
                QQcm_send_key = null;
            }

            try
            {
                if (avForm != null)
                {
                    avForm.AVClose();
                    avForm.Dispose();
                    avForm = null;
                }

            }
            catch (Exception)
            {

            }

            try
            {
                if (ravForm != null)
                {
                    ravForm.AVClose();
                    ravForm.Dispose();
                    ravForm = null;
                }
            }
            catch (Exception)
            {

            }

            try
            {
                LB_sockUDP.CloseSock();
                LB_sockUDP.Dispose();
                LB_sockUDP = null;
            }
            catch (Exception)
            {

            }

            if (emotionDropdown != null)
            {
                emotionDropdown.Dispose();
            }

            if (main_msg != null)
            {
                main_msg = null;
            }

            if (PicQueue != null)
            {
                PicQueue.Dispose();
                PicQueue.Clear();
                PicQueue = null;
            }

            if (Opposite != null)
            {
                Opposite = null;
            }

            if (imageP2Ps != null)
            {
                imageP2Ps.Dispose();
                imageP2Ps.Clear();
                imageP2Ps = null;
            }

            if (Close_Check!=null)
            {
                Close_Check.Enabled = false;
                Close_Check.Dispose();
                Close_Check = null;
            }

            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);

            System.GC.Collect();
        }
Example #5
0
 /// <summary>
 /// ���ô����ļ�����
 /// </summary>
 /// <param name="isSend">��ʶ�ļ��Ƿ��ͻ��ǽ���</param>
 /// <param name="FullFileName">��������ļ���������Ҫ���ŵ��ļ�·��</param>
 /// <param name="FileName">�ļ���</param>
 /// <param name="FileLen">�ļ�����</param>
 /// <param name="fileExtension">�ļ���չ��</param>
 /// <param name="FileMD5Value">�ļ�MD5ֵ</param>
 /// <param name="ServerIP">������IP��ַ</param>
 /// <param name="ServerUDPPort">������UDP����˿�</param>
 /// <param name="ServerTCPPort">������TCP����˿�</param>
 /// <param name="selfUserInfo">�Լ��������û���Ϣ</param>
 /// <param name="OppositeUserInfo">�Է��������û���Ϣ</param>
 public void SetParameter(bool IsSend, string FullFileName, string FileName, int FileLen, string fileExtension, string fileMD5Value,UserInfo selfUserInfo, UserInfo OppositeUserInfo)
 {
     ///�����ļ��������
     this.p2pFileTransmit1.SetParameter(IsSend, FullFileName, FileName, FileLen, fileExtension, fileMD5Value, selfUserInfo, OppositeUserInfo);
     this.PBar1.PositionMax = FileLen;//���������ֵΪ�ļ�����
     this.labProcess.Text = "(0/" + Calculate.GetSizeStr(FileLen) + ")";//�������ֽ���
     this.labFileName.Text = FileName;
     this.FileMD5Value = fileMD5Value;
     if (IsSend)
     {
         this.linkSaveAs.Visible = false;
         this.labOr.Visible = false;
         this.labelState.Text = "�ȴ��Է������ļ�...";
     }
     else
     {
         this.labelState.Text = "�Է��ڵȴ��������ļ�";
     }
 }
Example #6
0
        /// <summary>
        /// 同意视频信息后,进行初使化本地视频服务
        /// </summary>
        /// <param name="msg"></param>
        void AcceptVideoInitMethod(CSS.IM.XMPP.protocol.client.Message msg)
        {
            UserInfo user1;
            UserInfo user2;

            if (ravForm != null && !ravForm.IsDisposed)
            {
                try
                {
                    ravForm.Dispose();
                    ravForm = null;
                }
                catch (Exception)
                {
                }
            }
            else
            {
                ravForm = new CSS.IM.App.Controls.AVForm(TO_Jid);
                ravForm.AVCloseEvent += new CSS.IM.App.Controls.AVForm.AVCloseDelegate(avForm_AVCloseEvent);
            }

            //保存本地视频的监听端口
            ListenVideoUDPPort = ravForm.aVcommunicationEx1.selfUDPPort;

            RemotVideoUDPPort = msg.GetTagInt("UDPPort");
            RemotVideoUDPIP = IPAddress.Parse(msg.GetTag("UDPIP"));

            user1 = new UserInfo();

            user1.LocalPort = RemotVideoUDPPort;
            user1.LocalIP = RemotVideoUDPIP;

            ravForm.SetRemoteAddress(user1, RemotVideoUDPPort);

            user2 = new UserInfo();
            user2.LocalIP = Program.LocalHostIP;
            user2.LocalPort = ListenVideoUDPPort;
            ravForm.SetLocalAddress(user2);
            ravForm.AgreeEvent += new CSS.IM.App.Controls.AVForm.AgreeDelegate(ravForm_AgreeEvent);//接收视频会话事件
            ravForm.btn_hangup.Visible = false;//挂断不可用
            ravForm.btn_agree.Visible = true;//接受可用
            ravForm.btn_refuse.Visible = true;//拒绝可用
            try
            {
                ravForm.Show();
            }
            catch (Exception)
            {

            }

            //if (ravForm.callSoundPlayer != null)
            //    ravForm.callSoundPlayer.Stop();
        }
Example #7
0
        /// <summary>
        /// 对方同意视频,并初使化视频后,本地也进行视频初使化
        /// </summary>
        /// <param name="msg"></param>
        void ReturnAcceptVideoInitMethod(XMPP.protocol.client.Message msg)
        {
            UserInfo user1;
            UserInfo user2;
            CSS.IM.XMPP.protocol.client.Message res_msg;
            RemotVideoUDPPort = msg.GetTagInt("UDPPort");
            RemotVideoUDPIP = IPAddress.Parse(msg.GetTag("UDPIP"));

            user1 = new UserInfo();
            user1.LocalIP = RemotVideoUDPIP;
            user1.LocalPort = RemotVideoUDPPort;

            avForm.SetRemoteAddress(user1, RemotVideoUDPPort);

            user2 = new UserInfo();
            user2.LocalIP = Program.LocalHostIP;
            user2.LocalPort = ListenBasicUDPPort;

            avForm.SetLocalAddress(user2);

            avForm.iniAV(CSS.IM.Library.AV.VideoSizeModel.W320_H240);

            res_msg = new CSS.IM.XMPP.protocol.client.Message();
            res_msg.Type = MessageType.chat;
            res_msg.To = TO_Jid;
            res_msg.SetTag("m_type", 3);
            XmppConn.Send(res_msg);//告诉对我准备好了

            if (avForm.callSoundPlayer != null)
                avForm.callSoundPlayer.Stop();
        }
Example #8
0
        /// <summary>
        /// 同意视频信息后,进行初使化本地视频服务
        /// </summary>
        /// <param name="msg"></param>
        void AcceptInitMethod(CSS.IM.XMPP.protocol.client.Message msg)
        {
            UserInfo user1;
            UserInfo user2;

            if (ravForm != null && !ravForm.IsDisposed)
            {
                try
                {
                    ravForm.Dispose();
                    ravForm = null;
                }
                catch (Exception)
                {
                }
            }
            else
            {
                ravForm = new AVForm(to_Jid);
                ravForm.AVCloseEvent += new AVForm.AVCloseDelegate(avForm_AVCloseEvent);
            }
            LocalVideoUDPPort = ravForm.aVcommunicationEx1.selfUDPPort.ToString();

            VideoRemotUDPPort = msg.GetTagInt("UDPPort");
            VideoRemotUDPIP = IPAddress.Parse(msg.GetTag("UDPIP"));
            user1 = new UserInfo();
            user1.LocalIP = VideoRemotUDPIP;
            user1.LocalPort = VideoRemotUDPPort;
            ravForm.SetRemoteAddress(user1, VideoRemotUDPPort);

            user2 = new UserInfo();
            user2.LocalIP = Program.LocalHostIP;
            user2.LocalPort = int.Parse(LocalVideoUDPPort);
            ravForm.SetLocalAddress(user2);
            ravForm.AgreeEvent += new AVForm.AgreeDelegate(ravForm_AgreeEvent);//接收视频会话事件
            ravForm.btn_hangup.Visible = false;//挂断不可用
            ravForm.btn_agree.Visible = true;//接受可用
            ravForm.btn_refuse.Visible = true;//拒绝可用
            try
            {
                ravForm.Show();
            }
            catch (Exception)
            {

            }
        }
Example #9
0
        //public void sendFileTransfers(object pathob)
        //{
        //    FileInfo f = new FileInfo(pathob.ToString());
        //    this.FileTransfers(true, f.FullName, f.Name, (int)f.Length, f.Extension, Hasher.GetMD5Hash(f.FullName));
        //}
        /// <summary>
        /// 发送或接收文件
        /// </summary>
        /// <param name="IsSend">true是发送者,false是接收者</param>
        /// <param name="fullFileName">要发送的文件的绝对路径,如果接收则传空字符串</param>
        /// <param name="FileName">文件名</param>
        /// <param name="FileLen">文件的长度</param>
        /// <param name="fileExtension">文件扩展名</param>
        /// <param name="FileMD5Value">文件的MD5值</param>
        public void FileTransfers(bool IsSend, string fullFileName, string FileName, int FileLen, string fileExtension, string FileMD5Value)
        {
            if (IsSend && IsTransfers(FileMD5Value))
            {
                this.AppendSystemRtf(FileName + " 已在传输队列中,请不要重复发送!");
                return;//如果要发送的文件已经在传输队列,则退出
            }

            p2pFile fSend = new p2pFile();//创建一个P2P文件传输组件用于传送文件
            fSend.Name = FileMD5Value;

            TabPage tab = new TabPage(FileName);
            tab.Controls.Add(fSend);
            tab.Tag = fSend;
            filelistfrom.tabControl1.TabPages.Add(tab);

            if (IsSend)
            {
                string fileInfo = FileName + "|" + FileLen.ToString() + "|" + fileExtension + "|" + FileMD5Value;//初次请求发送文件时要先发送“控件参数”到对方,请求对方创建“文件发送控件”并建立连接
                Msg msg = new Msg((byte)ProtocolClient.FileTransmitRequest, TextEncoder.textToBytes(fileInfo));

                this.sockUDP1.Send(BaseRemotUDPIP, BaseRemotUDPPort, msg.getBytes());
                AppendSystemRtf("请等待对方接收文件 " + FileName + ") 。请等待回应或取消传输。");
                //this.infoMessage1.showMsg("请等待对方接收文件 " + FileName + ") 。请等待回应或取消传输。");
            }
            else
            {
                AppendSystemRtf("对方要传送文件 " + FileName + "(" + Calculate.GetSizeStr(FileLen) + ")" + " 给您,请接收或取消传输。");
            }

            UserInfo self = new UserInfo();//将自己的在线基本信息告诉文件传输组件,使传输组件中的套接字确定文件数据包的网络传输协议
            self.LocalIP = Program.LocalHostIP;
            self.IP = Program.LocalHostIP;

            UserInfo Opposite = new UserInfo();//将对方的在线基本信息告诉文件传输组件,使传输组件中的套接字确定文件数据包的网络传输协议
            Opposite.LocalIP = BaseRemotUDPIP;
            Opposite.IP = BaseRemotUDPIP;

            fSend.SetParameter(IsSend, fullFileName, FileName, FileLen, fileExtension, FileMD5Value, self, Opposite);//设置文件传输组件相关参数
            fSend.fileTransmitBefore += new p2pFile.fileTransmitBeforeEventHandler(fSend_fileTransmitBefore);//文件开始传输事件
            fSend.fileTransmitCancel += new p2pFile.fileTransmitCancelEventHandler(fSend_fileTransmitCancel);//文件传输取消事件
            fSend.fileTransmitError += new p2pFile.fileTransmitErrorEventHandler(fSend_fileTransmitError);//文件传输错误事件
            fSend.fileTransmitted += new p2pFile.fileTransmittedEventHandler(fSend_fileTransmitted);//文件传输完成事件
            fSend.getFileProxyID += new p2pFile.getFileProxyIDEventHandler(fSend_getFileProxyID);//文件传输获取中转服务ID
            fSend.fileTransmitGetUDPPort += new p2pFile.GetUDPPortEventHandler(fSend_fileTransmitGetUdpLocalPort);//获得文件传输套接字UDP侦听端口
            fSend.fileTransmitConnected += new p2pFile.ConnectedEventHandler(fSend_fileTransmitConnected);//当文件传输与对方建立传输通道事件
            fSend.Dock = System.Windows.Forms.DockStyle.Fill;

            this.filelistfrom.tabControl1.SelectedTab = tab;
            try
            {
                filelistfrom.TopMost = true;
                filelistfrom.Show();
            }
            catch (Exception)
            {

            }

            filelistfrom.Activate();
        }
Example #10
0
        /// <summary>
        /// 对方同意视频,并初使化视频后,本地也进行视频初使化
        /// </summary>
        /// <param name="msg"></param>
        void ReturnAcceptMethod(XMPP.protocol.client.Message msg)
        {
            UserInfo user1;
            UserInfo user2;
            CSS.IM.XMPP.protocol.client.Message res_msg;
            VideoRemotUDPPort = msg.GetTagInt("UDPPort");
            VideoRemotUDPIP = IPAddress.Parse(msg.GetTag("UDPIP"));

            user1 = new UserInfo();
            user1.LocalIP = VideoRemotUDPIP;
            user1.LocalPort = VideoRemotUDPPort;

            avForm.SetRemoteAddress(user1, VideoRemotUDPPort);

            user2 = new UserInfo();
            user2.LocalIP = Program.LocalHostIP;
            user2.LocalPort = int.Parse(LocalVideoUDPPort);

            avForm.SetLocalAddress(user2);

            avForm.iniAV(VideoSizeModel.W320_H240);

            res_msg = new CSS.IM.XMPP.protocol.client.Message();
            res_msg.Type = MessageType.chat;
            res_msg.To = to_Jid;
            res_msg.SetTag("m_type", 3);
            res_msg.Body = "falg";
            _connection.Send(res_msg);//告诉对我准备好了
        }
Example #11
0
 /// <summary>
 /// �������û�������ɾ��һ���û�
 /// </summary>
 /// <param name="_UserInfo">Ҫɾ�����û�</param>
 public void Romove(UserInfo _UserInfo)
 {
     base.InnerList.Remove(_UserInfo);
 }
Example #12
0
 /// <summary>
 /// �������û����������һ���û�
 /// </summary>
 /// <param name="_UserInfo">Ҫ��ӵ��û�</param>
 public void add(UserInfo _UserInfo)
 {
     base.InnerList.Add(_UserInfo);
     _UserInfo.Index = this.Count-1;
 }