动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Hibernate核心接口简介.
.深入Java中文问题及最优解决方法.
.使用spring MVC框架进行文件上传.
.Java编程基础.
.如何在程序异常或正常退出JVM时执.
.java基础入门之文件操作.
.记录log日志文件的工具类.
.Java编程准则.
.编写 JScript 代码.
.Netbeans IDE常见问题集锦.
.在Weblogic上配置Hibernate为JND.
.MIDlet生命周期的理解及游戏死机.
.Java 在Client/Server 网络中的应.
.Java的逗号运算符.
.经典JAVA IDE-Eclips使用秘技.
.利用java做一个简单的计算器.
.join 方法.
.用JDom轻松整合Java和XML.
.SmartUpload在servlet中使用方法.
.Java虚拟机结构基础研究之一.

用.net和协议快速开发下载软件

发表日期:2008-1-5 |



  在互连网广泛应用的今天,将有用的信息下载到本地是一件很普遍的事。当然,这个过程我们可以通过许多下载工具实现。目前的这些下载工具,绝大多数都是使用http协议完成的。虽然使用http编写下载工具是一种很简单的方法,但美中不足的是开发人员必须要结合winsock并编写大量的代码才可以完成。因为http是一个工业标准,你不可以自定义这个标准,唯一的办法只有服从。而且由于用到winsock技术,所以对开发人员的要求也很高。
  
  以前我曾经用vb6编写了一个下载程序,在程序中使用了vb6中提供的winsock activeX控件和http协议来实现最简单的下载功能。这个程序的长度有200行。
  
  今天当我翻开.net框架时,我兴奋了,应为要编写一个下载软件比以前方便、快捷了,于是我忍不住希望有人和我分享这种愉悦的心情。我真的是为.net叫好,他能使你从乏味的工作中解脱出来!
  
  下面就让我们一下这种技术为什么如此让人兴奋。
  
  在.net中编写快速简单的下载和上传的代码只要调用WebClient类就可以了。对于简单请求和响应事务,WebClient类提供将数据上载到Internet服务器或从Internet服务器下载数据的最简便的方法。WebClient提供上载和下载文件、发送和接收流以及将数据缓冲区发送到服务器并接收响应的方法。这样,事情就简单多了。
  
  了解了这个技术后,我们就可以编写下载和上传的程序了。
  
  先添加timer,textbox,button,savefiledialog和4个label控件,savefiledialog用来保存下载的文件,timen用来和一个label控件结合,显示已经下载了多少。Textbox用来接受输入的url地址。将timer1的属性interval定为1000,即每一秒启动一次Timer1_Tick事件。将label1.text定为http:\\。
  
  代码如下:
  Imports System.Net'到入命名空间
  Public Class Form1
  Inherits System.Windows.Forms.Form
  Public Shared fpath As String
  Dim fsize As Long
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
  System.EventArgs) Handles Button1.Click
  Dim urld As String
  Dim i As Integer
  Dim dfile As New WebClient()'实例化WebClient类
  SaveFileDialog1.ShowDialog()
  fpath = SaveFileDialog1.FileName
  Label3.Text = "文件保存在" & fpath
  urld = Label1.Text + TextBox1.Text
  Timer1.Enabled = True
  dfile.DownloadFile(urld, fpath)'下载指定nrl地址的文件
  Timer1.Enabled = False
  End Sub
  Private Sub Timer1_Tick(ByVal sender As Object,
  ByVal e As System.EventArgs) Handles Timer1.Tick
  Me.Refresh()'用来刷新窗口
  Dim th2 As New th1()
  Dim tt As New System.Threading.Thread(AddressOf th2.timeth) 实例化线程类
  tt.Start()'启动线程
  Label2.Text = th2.downk'显示下载文件的大小
  '进行计算下载速度
  Static k As Integer
  Dim p,downspeed
  p = k
  k = p + 1
  p = k
  Dim fileinfo As New System.IO.FileInfo(form.fpath)
  downspeed = fileinfo.Length()
  downspeed= downspeed/p
  label4.textbox= "当前下载速度是"& downspeed & "k/m"
  End Sub
  End Class
  Public Class th1
  Public Shared downk As String
  Dim form As New Form1()
  Dim fileinfo As New System.IO.FileInfo(form.fpath)
  Dim fsize As Long
  Public Sub timeth()
  If fileinfo.Exists = True Then
  fsize = fileinfo.Length()
  downk = "以下载文件" & fsize & "k"
  End If
  End Sub
  End Class
  
  你看懂上面的代码了吗?别急,让我来解释一下。
  
  ● 第一个要解释的是线程,简单的说就是在exe文件运行的时候计算机会为他创建一个进程,将这个进程分成若个块,每块完成不同的任务,这些块就是线程(更多的知识请见相关照料)。那为什么我会在Timer1_Tick事件(每过一段时间就执行其中的代码)中使用线程尼?因为我发现在调试的时候WebClient类占有的资源校大(这可能是net自己的原因),在运行时使整个窗口的显示不完整,使用了线程和Me.Refresh()语句后情况有所好转(在net中要创建线程的方法见msdn)。
  
  ● 另一个要解释的是System.IO框架中的FileInfo类,我用他来读已经下载的文件大小。在程序中我没有获取要下载文件的大小,换句话说就是只有等下载完成后才可以知道文件到底用多大。这时您或许要问,难道net中没提供相关的类吗?我花了5个小时,将net中的所有类打开,一一查看,终于找了到相关的类。这两个类就是WebRequest和WebResponse(这两个类的使用见msdn),即它们的子代类因为这两个类的使用比WebClient复杂(假如你要写更复杂的下载程序就要使用它们)但是假如你要获得服务器上你要下载的文件的大小,你就必须使用它们。下面我就写一个简单的代码,来获得其服务器上你要下载的文件的大小:
  
  Private Sub Form1_Click(ByVal sender As Object,
  ByVal e As System.EventArgs) Handles MyBase.Click
  Dim th As WebRequest =
  WebRequest.Create("http://download2.ssreader.com/download/SSR362b5B(0802).exe")
  '这个站是超星的网站,SSR362b5B(0802).exe文件是超星图书阅读器
  Dim w As WebResponse = th.GetResponse()
  Dim j As Long
  j = w.ContentLength().ToString'获得文件大小
  Debug.WriteLine(j)
  End Sub
  
  ● 对于无法获得的下载速度,我们可以通过计算来获得。计算的思路是,通过定义一个静态变量,使他每一秒加一,就可以知道下载了多少秒,在从downspeed = fileinfo.Length()语句得到下载的这段时间文件的大小,用downspeed除以秒就可以得到当前的下载速度了,请注重这只是一个估略的值。假如你想每隔n秒才计算的话,设置p=k* timer1.interval/1000
  
  ● 最后要说的是,你还可以调用wininte.dll这个动态库中的函数,这个库是专为编写网络程序提供的。使用它你也可以编写下载和上传的程序。当然你也可以使用http来写。
  
  在结束前向大家推荐一本用vb和协议开发的书,《visual basic 网络高级编程》是人民邮电出版社出的,isbn号是7-115-09171-4/tp.2122,60元汪晓平,钟军写的。这本书具体讲了用vb和http,FTP,smtp,nntp,telnt协议开发网络程序的知识。
  
  看了以上的代码你是否觉得编写下载软件以不是什么高手才可以完成的任务了吧!那就动手吧!
上一篇:设计表现层时需要考虑的几个问题 人气:434
下一篇:实战Visual Basic.Net对话框 人气:600
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-10-10 企业网站智能管理系统(TZIMS) v6
2008-10-10 拓文asp.net网站内容管理系统 v6
2008-10-10 动网论坛PHP版 v2.0++ Build 081
2008-10-10 免费时代CMS v5.0
2008-10-10 wodig第四季中文DIGG社区 v4.1 b
2008-10-10 老Y文章管理系统 v2.2 bulid 081
2008-10-10 魔法盒动感相册 ASP+SQL版 v2.0
2008-10-10 Asoft签到管理系统 v3.0 Pack1
2008-10-10 哥特人音乐网潮流留言本 v1.1
2008-9-29 酷狗音乐(原KuGoo)2008 v5.310 正
2008-9-29 QQTab 1.1
2008-9-29 网络传送带 Net Transport 2.64a
2008-9-29 谷歌金山词霸v1.8
2008-9-29 TweakVI 1.0 Build 1090
2008-9-29 ACDSee Pro 2.5 Build 333 汉化绿
2008-9-29 Winamp v5.541(2189) 周明波简体
2008-9-27 CCleaner 2.12.651
2008-9-27 Mozilla Thunderbird 2.0.0.17 英
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号