⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 downloadsharecontent.cs

📁 破解的飞信源代码
💻 CS
📖 第 1 页 / 共 2 页
字号:
                using (TransportingFile file = new TransportingFile(base.FilePath, base.FileSize, base.FileName, base.LastTimeCompleteSize, base.First100MMd5, remotePeer))
                {
                    while (end < (base.FileSize - 1))
                    {
                        HttpWebRequest request;
                        base.WaitEvent.WaitOne();
                        base.WaitEvent.Set();
                        if (base.IsCancel)
                        {
                            return;
                        }
                        this.CalculatePosition(ref start, ref end);
                        num3 = 0;
                        base._tryInterval = 500;
                    Label_00FF:
                        request = ConnectionFactory.CreateHttpWebRequest(text2 + Environment.TickCount, base.Owner, false, true);
                        request.ReadWriteTimeout = 0x186a0;
                        request.AddRange(Convert.ToInt32(start), Convert.ToInt32(end));
                        request.Headers.Add("Pragma", base.SessionId);
                        HttpWebResponse response = null;
                        try
                        {
                            response = request.GetResponse() as HttpWebResponse;
                            statusCode = (int) response.StatusCode;
                            time2 = DateTime.Now;
                        }
                        catch (WebException exception)
                        {
                            HttpWebResponse response2 = exception.Response as HttpWebResponse;
                            int num6 = (response2 == null) ? ((int) ((HttpStatusCode) 520)) : ((int) response2.StatusCode);
                            if (num6 <= 0x12b)
                            {
                                goto Label_03A9;
                            }
                            int num11 = num6;
                            if (num11 <= 0x194)
                            {
                                switch (num11)
                                {
                                    case 0x191:
                                    case 0x194:
                                        goto Label_01EC;
                                }
                            }
                            else if ((num11 == 0x1a0) || (num11 == 500))
                            {
                            }
                            goto Label_02E7;
                        Label_01EC:
                            this.CancelShareContent();
                            switch (num6)
                            {
                                case 0x191:
                                    text = string.Format("credential:{0},filesize:{1}", base.Owner.SsiCredential, base.FileSize);
                                    break;

                                case 0x194:
                                    text = string.Format("credential:{0},filesize:{1},start:{2},preHttpStatusCode{3},preBlockDateTime:{4}", new object[] { base.Owner.SsiCredential, base.FileSize, start, statusCode, time2.ToString("hh:mm ss") });
                                    break;
                            }
                            ClientLogger.WriteGeneral("DownLoad Failed failed.." + text, "Downlad " + base.DownLoadUrl + " TO:" + base.FilePath + " Failed " + exception.ToString());
                            text = string.Empty;
                            return;
                        Label_02E7:
                            num3++;
                            if (num4 > (base.Owner.Configuration.SystemSetting.FileShareSetting.RelayMaxTryTime * 0x3e8))
                            {
                                ClientLogger.WriteGeneral("Downlad " + base.FilePath + " Failed" + exception.ToString() + ",重试次数:" + num3.ToString());
                                base.AsyncSendCancelInfo();
                                this.DeleteExistFile();
                                base.RaiseShareContentFailed("");
                                return;
                            }
                            int millisecondsTimeout = base._tryInterval * num3;
                            base._tryInterval = millisecondsTimeout;
                            num4 += millisecondsTimeout;
                            Thread.Sleep(millisecondsTimeout);
                            statusCode = num6;
                            time2 = DateTime.Now;
                            goto Label_00FF;
                        }
                    Label_03A9:
                        if ((base.LastTimeCompleteSize != 0) && (start == 0))
                        {
                            start = end = base.LastTimeCompleteSize;
                        }
                        else
                        {
                            using (Stream stream = response.GetResponseStream())
                            {
                                if (base.IsCancel)
                                {
                                    return;
                                }
                                byte[] buffer = new byte[(end - start) + 1];
                                long num8 = start;
                                num3 = 0;
                                try
                                {
                                    while (start <= end)
                                    {
                                        int length = stream.Read(buffer, 0, buffer.Length);
                                        file.WriteToFile(start, buffer, length);
                                        start += length;
                                    }
                                }
                                catch (WebException exception2)
                                {
                                    num3++;
                                    start = num8;
                                    if (num3 > 3)
                                    {
                                        ClientLogger.WriteGeneral("重试了3次,StreamRead都出现了WebExption");
                                        throw exception2;
                                    }
                                    goto Label_00FF;
                                }
                                catch (Exception exception3)
                                {
                                    ClientLogger.WriteGeneral("StreamRead 出现未知异常");
                                    throw exception3;
                                }
                                base.RaiseShareContentProgress(new ShareContentProcessEventArgs(((float) end) / ((float) base.FileSize)));
                            }
                            num3 = 0;
                            num4 = 0;
                            float num10 = ((float) DateTime.Now.Subtract(now).TotalMilliseconds) / 1000f;
                            if (num10 != 0f)
                            {
                                if (end >= base.LastTimeCompleteSize)
                                {
                                    base.Rate = (end - base.LastTimeCompleteSize) / num10;
                                }
                                else
                                {
                                    base.Rate = ((float) end) / num10;
                                }
                            }
                            base.FinishPercent = ((float) end) / ((float) base.FileSize);
                            if (response != null)
                            {
                                response.Close();
                            }
                        }
                    }
                }
                base.Complete = true;
                base.RaiseShareContentComplete();
            }
            catch (Exception exception4)
            {
                if (!base.IsCancel)
                {
                    ClientLogger.WriteException("Downlad " + base.FilePath + " Failed ", exception4);
                    base.RaiseShareContentFailed("");
                }
            }
        }

        protected override void OnBlockTransported(BlockTranEventArgs e)
        {
            try
            {
                base.Owner.TransportManager.UpdateCompletedSize(base.TransportingFile.Id, e.Current);
            }
            catch
            {
            }
            finally
            {
                base.OnBlockTransported(e);
            }
        }

        protected override void OnTransportFailed()
        {
            this.CloseP2PTransport();
            ClientLogger.WriteGeneral("P2P下载文件失败,等待发送方转Relay " + base.FileName);
            GlobalTimer.Register(new EventHandler(this.WaitP2pToRelayEventHandler), 0x4b0);
        }

        private void WaitP2pToRelayEventHandler(object sender, EventArgs e)
        {
            try
            {
                GlobalTimer.Unregister(new EventHandler(this.WaitP2pToRelayEventHandler));
                if (base.Transmittype != ShareContentTransmitType.Relay)
                {
                    this.CancelShareContent();
                }
            }
            catch (Exception exception)
            {
                ClientLogger.WriteGeneral("", exception.ToString());
            }
        }

        public Contact From
        {
            get
            {
                return this._from;
            }
            internal set
            {
                this._from = value;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -