/// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 /// <param name="ip"></param>
 /// <param name="port"></param>
 public DataArrivalEventArgs( Msg message, System.Net.IPAddress ip, int port)
 {
     this.msg = message;
     this.IP = ip;
     this.Port = port;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 public DataArrivalEventArgs( Msg  message)
 {
     this.msg = message;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="message"></param>
 /// <param name="ip"></param>
 /// <param name="port"></param>
 /// <param name="netClass"></param>
 /// <param name="Sock"></param>
 public DataArrivalEventArgs( Msg message, System.Net.IPAddress ip, int port,NatClass netClass,object Sock)
 {
     this.msg = message;
     this.IP = ip;
     this.Port = port;
     this.NetClass = netClass;
     this.SockObj = Sock;
 }
示例#4
0
        /// <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 ImageTransfers(bool IsSend, string fullFileName, string FileName, int FileLen, string fileExtension, string FileMD5Value)
        {
            if (this.imageP2Ps.find(FileMD5Value) == null)//如果图片不在传输队列,则创建新文件传输组件进行传输
            {
                CSS.IM.Library.Controls.p2pFileTransmitEX imageTransmit = new CSS.IM.Library.Controls.p2pFileTransmitEX();
                this.imageP2Ps.add(imageTransmit);//添加文件传输组件到传输队列

                imageTransmit.fileTransmitGetUDPPort += new CSS.IM.Library.Controls.p2pFileTransmitEX.GetUDPPortEventHandler(imageTransmit_fileTransmitGetUDPPort);
                imageTransmit.fileTransmitted += new CSS.IM.Library.Controls.p2pFileTransmitEX.fileTransmittedEventHandler(imageTransmit_fileTransmitted);//图片传输结束
                imageTransmit.fileTransmitOutTime += new p2pFileTransmitEX.fileTransmitOutTimeEventHandler(imageTransmit_fileTransmitOutTime);
                //imageTransmit.fileTransmitConnected += new p2pFileTransmit.ConnectedEventHandler(imageTransmit_fileTransmitConnected);
                //imageTransmit.fileTransmitCancel += new p2pFileTransmit.fileTransmitCancelEventHandler(imageTransmit_fileTransmitCancel);//图片传输取消或异常中断
                //imageTransmit.getFileProxyID += new p2pFileTransmit.getFileProxyIDEventHandler(imageTransmit_getFileProxyID);
                //imageTransmit.fileTransmitting += new p2pFileTransmit.fileTransmittingEventHandler(imageTransmit_fileTransmitting);
                if (IsSend)
                {
                    string fileInfo = FileName + "|" + FileLen.ToString() + "|" + fileExtension + "|" + FileMD5Value;//初次请求发送文件时要先发送“控件参数”到对方,请求对方创建“文件发送控件”并建立连接
                    CSS.IM.Library.Class.Msg msg = new CSS.IM.Library.Class.Msg((byte)ProtocolClient.ImageTransmitRequest, TextEncoder.textToBytes(fileInfo));
                    this.LB_sockUDP.Send(RemotBaseUDPIP, RemotBaseUDPPort, msg.getBytes());
                    imageTransmit.ServerIp = RemotBaseUDPIP;
                }
                else
                {
                    System.IO.DirectoryInfo dInfo = new System.IO.DirectoryInfo(Util.receiveImage);
                    if (!dInfo.Exists)
                        dInfo.Create();
                    imageTransmit.ServerIp = RemotBaseUDPIP;
                    imageTransmit.startIncept(Util.receiveImage + FileMD5Value + fileExtension);//自动接收图片
                }
                imageTransmit.SetParameter(IsSend, fullFileName, FileName, FileLen, fileExtension, FileMD5Value);//设置文件传输组件相关参数
            }
        }
示例#5
0
        /// <summary>
        /// 接收到UDP数据功能
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LB_sockUDP_DataArrival(object sender, Library.Net.SockEventArgs e)
        {
            CSS.IM.Library.Class.Msg msg = new CSS.IM.Library.Class.Msg(e.Data);
            switch (msg.InfoClass)
            {
                case (byte)ProtocolClient.ImageTransmitRequest://图片文件发送请求
                    onUserImageSendRequest(new DataArrivalEventArgs(msg));
                    break;
                case (byte)ProtocolClient.ImageTransmitGetUDPPort://获取对方文件传输UDP本地端口
                    string[] IdInfo = TextEncoder.bytesToText(msg.Content).Split('|');
                    setImageTransmitGetUdpPort(IdInfo[0], IdInfo[1], IdInfo[2]);
                    break;
                case (byte)ProtocolClient.FileTransmitRequest://文件发送请求
                    this.BeginInvoke(FileSendRequestEvent, new object[] { new DataArrivalEventArgs(msg) });
                    break;
                case (byte)ProtocolClient.FileTransmitGetUDPPort://获取对方文件传输UDP本地端口
                    //this.onUserFileTransmitGetUDPPort(new DataArrivalEventArgs(msg));
                    break;
                case (byte)CSS.IM.Library.Class.ProtocolClient.FileTransmitCancel://获得服务器返回的文件传输套接字广域网UDP端口
                    {

                        ////Debug.WriteLine("取消文件传输");
                        ////Debug.WriteLine(TextEncoder.bytesToText(msg.Content));
                        ////filelistfrom.tabControl1.TabPages
                        //for (int i = 0; i < filelistfrom.tabControl1.TabPages.Count; i++)
                        //{
                        //    TabPage tabpage = filelistfrom.tabControl1.TabPages[i] as TabPage;
                        //    CSS.IM.App.Controls.p2pFile p2pfile = tabpage.Controls[0] as CSS.IM.App.Controls.p2pFile;
                        //    if (TextEncoder.bytesToText(msg.Content) == p2pfile.Name)
                        //    {
                        //        p2pfile.CancelTransmit(true);
                        //    }
                        //}
                    }
                    break;
                default:
                    break;
            }
        }
示例#6
0
 /// <summary>
 /// 图片传输前的获取对方的端口
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="Port"></param>
 /// <param name="udpHandshakeInfoClass"></param>
 private void imageTransmit_fileTransmitGetUDPPort(object sender, int Port, bool udpHandshakeInfoClass)
 {
     CSS.IM.Library.Class.Msg msg = new CSS.IM.Library.Class.Msg((byte)ProtocolClient.ImageTransmitGetUDPPort);
     msg.Content = TextEncoder.textToBytes((sender as CSS.IM.Library.Controls.p2pFileTransmitEX).FileMD5Value + "|" + Port.ToString() + "|" + udpHandshakeInfoClass.ToString());//将获得的本地UDP端口号传输给对方
     LB_sockUDP.Send(RemotBaseUDPIP, RemotBaseUDPPort, msg.getBytes());
 }