第15章网络编程技术 使用Visual Basic不仅可以编写出单机程序,也可以编写出基于网络的程序。本章将介绍使用Winsock控件编写客户/服务器程序,使用WebBrowser控件制作浏览器,使用Internet Transfer控件下载网页等方面的内容。
15.1 网络基础 使用Visual Basic编写网络程序之前,首先应当了解一些在编程时会用到的网络知识。例如,IP地址、端口和协议。
15.1.1 IP地址 计算机网络中相连的每一台计算机至少有一个网卡。对于局域网(LAN)而言,通常是使用以太网、令牌环或FDDI网卡。如果是一个移动用户或没有直接接入网络的家庭用户,则可使用调制解调器与网络相连。
15.1.2 端口 端口(port)是计算机输入输出信息的接口。例如许多个人计算机有串口(serial port),它是加载在I/O设备上的一个物理接口。计算机连入通信网络或Internet也需要一个端口,但这些端口不是物理端口,而是一个由16位数标识的逻辑端口。这个端口号是TCP/IP协议的一部分,通过这些端口信息可以进行输入和输出。在Internet上的每个计算机都有10000个逻辑端口号,其中1024以内的端口号几乎都分配给了特殊服务的功能。因此,如果要建立新的应用,不应该使用这个范围内的端口号。
15.1.3 协议 在讨论网络的连接机制时,还需要说明在网络上传输哪种数据类型、怎样解释这些数据类型以及怎样请求传输这些数据,这些都是通过网络协议规定的。协议是描述数据交换时必须遵循的规则和数据格式。网络协议中有两个非常重要的协议,分别是TCP协议和UDP协议。TCP协议是一个面向连接的协议,允许从一台机器发出的字节流无差错地发往网络中的其他机器。TCP还要处理流量控制,以避免快速发送方向低速接收方发送过多数据而使接收方无法处理。UDP是一个不可靠的、无连接协议,用于不需要TCP的排序和流量控制能力而是自己完成这些功能的应用程序。这种协议主要适合传输语音或影像。
15.2 Winsock 控件 WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程机器并进行数据交换。使用这两种协议可以开发复杂的通信应用程序和实用程序。要使用Winsock 控件,首先应将其添加到工具箱中,方法为:右击工具箱,选择“部件”菜单项,在打开的“部件”对话框控件列表中选择“Microsoft Winsock Control 6.0”项,单击“确定”按钮后Winsock 控件就会被添加到工具箱中,其在工具箱中的图标为。Winsock 控件在运行状态下不可见。
15.2.1 Winsock 控件的常用属性 (具体内容请参照本书)
15.2.2 Winsock控件的常用方法 1、Connect方法 2、Accept方法 3、Listen方法 4、SendData方法 5、GetData方法 6、Close方法
15.2.3 Winsock控件的常用事件 (具体内容请参照本书)
15.2.4 Winsock编程模型 1、基于TCP的模型 2、基于UDP的模型 UDP协议是一个无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外 UDP 应用程序可以是客户机,也可以是服务器。
15.2.5 应用案例——简易聊天程序 (具体内容请参照本书)
15.3 制作自己的浏览器 (具体内容请参照本书)
15.3.1 WebBrowser控件 要制作自己的浏览器,在Visual Basic中可以使用WebBrowser控件。将该控件添加到工具箱的方法为:“工程”|“部件”菜单项,“部件”对话框中选择“Microsoft Internet Controls”项。其在工具箱中的图标为。(具体内容请参照本书)
15.3.2 设计浏览器界面 (具体内容请参照本书)
15.3.3 编写代码实现浏览器 本例中使用到了窗体的Resize事件,该事件在窗体的大小被改变时发生。在上面的代码中体现了使用这一事件可以让控件的大小随着窗体大小而变化。(具体内容请参照本书)
15.4 下载网页 使用Visual Basic的Internet Transfer控件,可以将网页下载到本机上浏览。本节将介绍使用Internet Transfer控件下载网页的编程方法。
15.4.1 Internet Transfer控件 Internet Transfer控件能够使用Internet上应用最广泛的协议HTTP和FTP下载文件。HTTP主要用于从互联网中的服务器上传输HTML文档。当在浏览器中以"http://"开始键入一个Internet地址时,就在告诉服务器,想要打开的是一个具有HTML格式代码的文档,此时浏览器可以理解并显示这种代码。Internet Transfer控件还可以用这个协议从Internet的服务器上下载网页。
15.4.2 实现下载网页 (具体内容请参照本书)