羡慕现在流行的各类下载工具吗?其实利用VB提供的Winsock 控件,开发者完全可以实现这些软件的核心功能。Winsock 控件提供了访问TCP和UDP网络服务的方便途径,使用该控件编写客户或服务器应用程序,不必了解 TCP 的细节或调用底层的 Winsock API。只需设置控件的属性并调用其相应的方法就可以方便地连接到远程主机上,并且可以双向交换数据。
用TCP/IP协议连接的两台计算机可以彼此进行数据传输。如果创建客户应用程序,就必须获取服务器计算机名或 IP 地址,及进行“侦听”的端口,然后连接即可。如果创建服务器应用程序,应设置一个收听端口并进行收听。
UDP(用户数据文报协议)是一个无连接协议,计算机并不建立连接。为了传输数据,首先要设置客户计算机的端口。然后,服务器计算机只需将设置客户计算机的Internet地址,并将远程端口设置为与客户计算机的本地端口相同的值即可发送信息。
本文介绍的程序思路比较简单,使用Winsock 控件与服务器建立连接后,客户端计算机调用SendData方法发送特定的FTP命令数据。当客户端接收数据时,Winsock 控件会发生DataArrival事件,调用DataArrival 事件内的GetData方法即可获取数据。
启动VB6,新建一个工程,在控件箱中添加Winsock控件。在窗体上放置一个CommandButton 控件,一个TextBox 控件,一个Winsock控件,如图1所示。
程序代码:
首先,声明一些变量,代码如下所示。
Dim strCommand As String
Dim strWebPage As String
为了动态设置Winsock控件的一些属性,在“开始”按钮的Click事件加入以下代码。
Winsock1.RemoteHost="192.168.100.101" '设置连接的IP地址
Winsock1.RemotePort = 80 '设置连接的远程端口号
Winsock1.Connect '开始连接远程计算机。
当Winsock控件连接操作完成,就可以传送FTP命令给服务器了,因此在Winsock控件的Connect事件中加入以下代码:
On Error Resume Next '在错误处理程序结束后,恢复原有的运行
strWebPage= " 192.168.100.101/main.htm" '设置要下载的文件'添加FTP中取得文件的命令(GET)
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf
strCommand = strCommand + "Accept: */*" + vbCrLf
strCommand = strCommand + "Accept: text/html" + vbCrLf
strCommand = strCommand + vbCrLf '必须以vbCrLf结束命令
Winsock1.SendData strCommand '向远程计算机发送命令
当Winsock控件获取到数据时,需要对数据进行处理,本例中将获取的内容显示在文本框控件中,因此在Winsock控件的DataArrival事件加入以下代码:
On Error Resume Next '在错误处理程序结束后,恢复原有的运行
Dim webData As String
Winsock1.GetData webData,vbString '获取当前的数据块
Text1.Text = Text1.Text + webData '显示接收到的数据
结束语
怎么样?一个最简单的文件下载程序就诞生了。其实,开发者完全可以在本例的基础上结合多线程和断点保存技术,开发出更加强大的网络下载程序。也许下一个红透网络的下载程序就是你的作品哦。