unity 断点续传
来源:互联网 发布:windows经典桌面壁纸 编辑:程序博客网 时间:2024/05/20 22:39
using UnityEngine;using System.Collections;using System;using System.Net;using System.IO;public class Load : MonoBehaviour { AsyncOperation l; void Start () { // Application.backgroundLoadingPriority = ThreadPriority.Low; // l = Application.LoadLevelAsync("game"); StartCoroutine(FPointDown("http://127.0.0.1:8888/index.rar", "d:/a.rar")); StartCoroutine(FPointDown(@"http://dl_dir.qq.com/qqfile/qq/QQ2012/QQ2012Beta3.exe", "d:/qq.rar")); } void OnGUI () { GUILayout.Button(t); } void OnApplicationQuit() { print("stop"); StopCoroutine("FPointDown"); } string t = ""; IEnumerator downfile(string url, string LocalPath) { Uri u = new Uri(url); HttpWebRequest mRequest = (HttpWebRequest)WebRequest.Create(u); mRequest.Method = "GET"; mRequest.ContentType = "application/x-www-form-urlencoded"; HttpWebResponse wr = (HttpWebResponse)mRequest.GetResponse(); Stream sIn = wr.GetResponseStream(); FileStream fs = new FileStream(LocalPath, FileMode.Create, FileAccess.Write); long length = wr.ContentLength; long i = 0; decimal j = 0; while (i < length) { byte[] buffer = new byte[1024]; i += sIn.Read(buffer, 0, buffer.Length); fs.Write(buffer, 0, buffer.Length); if ((i % 1024) == 0) { j = Math.Round(Convert.ToDecimal((Convert.ToDouble(i) / Convert.ToDouble(length)) * 100), 4); t= "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节 下载进度" + j.ToString() + "%"; } else { t = "当前下载文件大小:" + length.ToString() + "字节 当前下载大小:" + i + "字节"; } yield return false; } sIn.Close(); wr.Close(); fs.Close(); } //断点下载 IEnumerator FPointDown(string uri,string saveFile) { //打开网络连接 System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri); System.Net.HttpWebRequest requestGetCount = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri); long countLength = requestGetCount.GetResponse().ContentLength; //打开上次下载的文件或新建文件 long lStartPos = 0; System.IO.FileStream fs; if (System.IO.File.Exists(saveFile)) { fs = System.IO.File.OpenWrite(saveFile); lStartPos = fs.Length; if (countLength - lStartPos <= 0) { fs.Close(); t = "已经"; yield break; } fs.Seek(lStartPos, System.IO.SeekOrigin.Current); //移动文件流中的当前指针 } else { fs = new System.IO.FileStream(saveFile, System.IO.FileMode.Create); } if (lStartPos > 0) { request.AddRange((int)lStartPos); //设置Range值 print(lStartPos); } //向服务器请求,获得服务器回应数据流 System.IO.Stream ns = request.GetResponse().GetResponseStream(); int len = 1024 * 8; byte[] nbytes = new byte[len]; int nReadSize = 0; nReadSize = ns.Read(nbytes, 0, len); while (nReadSize > 0) { fs.Write(nbytes, 0, nReadSize); nReadSize = ns.Read(nbytes, 0, len); t = "已下载:" + fs.Length / 1024 + "kb /" + countLength / 1024 + "kb"; yield return false; } ns.Close(); fs.Close(); }}
阅读全文
1 0
- unity 断点续传
- 【Unity开发】UNITY实现断点续传
- Unity客户端断点续传
- unity中实现断点续传功能
- Unity下实现断点续传的下载方式
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 断点续传
- 紫书第一章程序设计入门笔记
- 共享快递柜方案有哪些开发要多久
- [BFS] HDU 3533
- Java消息队列任务的平滑关闭
- 基于Camshift道路检测(改),基于划定框的匹配
- unity 断点续传
- 例题6-21 uva506 System Dependencies 模拟
- 一、数组
- centos7—raid
- HDU-2019(数列有序!)(逗号运算符和逻辑运算符)
- android资源
- Spring 注解概览
- 「Deep Learning」Spatial Transformer Networks
- intellij的高效使用快捷键