《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序

上传人:suns****4568 文档编号:62377533 上传时间:2018-12-20 格式:PPT 页数:40 大小:456KB
返回 下载 相关 举报
《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序_第1页
第1页 / 共40页
《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序_第2页
第2页 / 共40页
《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序_第3页
第3页 / 共40页
《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序_第4页
第4页 / 共40页
《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序》由会员分享,可在线阅读,更多相关《《visual-basic-60程序设计》第15章:使用winsock控件编写网络程序(40页珍藏版)》请在金锄头文库上搜索。

1、第15章 使用Winsock 控件编写网络程序,(时间:2次课,4学时),第15章 使用Winsock 控件编写网络程序,随着网络技术的发展,在网络环境中开发计算机应用程序越来越重要。 Visual Basic 6.0提供了强大的网络编程技术。Winsock控件是Visual Basic提供的一个很重要的ActiveX控件,它使得开发TCP/IP应用变得简单容易。 本章将学习如何使用Winsock控件编写网络程序,介绍了Winsock网络编程原理,及Winsock控件的属性、事件和方法,以及Winsock API编程的基本知识。,第15章 使用Winsock 控件编写网络程序,15.1 Win

2、sock编程基础 15.2 Winsock控件介绍 15.3 用Winsock控件编写TCP应用程序 15.4 用Winsock控件建立UDP程序 15.5 Winsock API编程 15.6 习题,15.1 Winsock编程基础,15.1.1 基本概念 15.1.2 套接字网络编程原理,15.1.1 基本概念,1. Internet协议 TCP/IP是Internet使用的协议族,是由多个相关协议组成的一个协议集合。,15.1.1 基本概念,1. Internet协议 对应于OSI的第57层。处于更高层次上的是一套面向特殊应用的传输协议,这些协议主要包括: SMTP(Simple Mai

3、l Transfer Protocol):简单邮件传输协议,用于发送邮件。 FTP(File Transfer Protocol):文件传输协议,用于上载和下载文件。 SNMP(Simple Network Management Protocal):简单网络管理协议。 HTTP(Hyper Text Transfer Protocol):超文本传输协议,用于超文本传输。 Telnet(Telecommunication Network;Virtual Terminal Protocol):用于远程登录和交互式访问。 TFTP(Trivial File Transfer Protocol):简单

4、文件传输协议。,15.1.1 基本概念,2. IP地址 通过网络进行数据通信,需要用地址来标识网络中的主机,这样才能保证数据正确地发送到主机。正像每一个房间需要一个房间号,每一个学生需要一个学号一样,TCPIP协议使用IP地址作为网络中主机的标识,而且每台主机的IP地址是惟一的,从而实现通过IP地址建立彼此之间的联系。 IP地址是由4个字节所构成的值。但是在实际使用时,可以有两种方法表示一个计算机的IP地址,它们都和4字节的IP地址等价。 一种是用点号隔开的4字节数,其表示方式“xxx.xxx.xxx.xxx”(xxx为0255间的数值)。例如,166.110.17.3就是一个标准的IP地址。

5、 另一种表示计算机的标志是域名(Domain Name),使用域名可以进一步降低记忆的难度。隐藏计算机的实际IP地址。例如。,15.1.1 基本概念,3. 端口 通常情况下,由于每台主机上运行不止一个应用程序,所以为使应用程序间建立连接,还需一个地址标识。在TCP/IP协议中使用端口(Port)来作为主机上运行的应用程序的标识号。IP地址相当于单位门牌号码,端口号是该单位各个办公室的编码。 因此,TCP/IP协议中一个有效的网络地址包括IP地址和端口地址。如图15.2所示。,15.1.1 基本概念,4. 什么是Socket Socket在英文中意为“插座”,也翻译为“套接字”。Socket这个

6、概念最初是指由美国的Berkeley 大学为UNIX操作系统开发的网络编程接口,它用来解决Internet上进程之间的通信问题。20世纪90年代初,由Microsoft公司联合其他公司共同制定了一套Windows下的网络编程接口,即Windows Socket规范。它继承和发展了UNIX中的Socket并得到广泛的应用,增加了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。 在Internet上,一个Socket是用一个三元组来描述的,其格式为协议,本地地址,本地端口其中协议指定了通信所使用的协议。这个三元组称为一个半相关,它描述了通信双方中的一方,客户方或服务器方

7、。协议,本地地址,本地端口,远地地址,远地端口这个五元组称为一个全相关,它描述了一次通信的双方,包括客户机方和服务器方。,15.1.1 基本概念,15.1.2 套接字网络编程原理,Windows下的Socket主要有如下3种类型: 流式Socket定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。对于建立在这种类型上的套接字来说,数据可以是双向传输的字节流,无长度限制。 数据报Socket定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠和无差错。 原始Socket允许对低层协议(如IP或ICMP)直接访问,主要用于新的网络协议实现的测试等,例如,

8、Windows带的Ping程序,就是通过ICMP协议来实现的。,15.1.2 套接字网络编程原理,1. 面向无连接协议Socket编程模式:,15.1.2 套接字网络编程原理,2. 面向连接协议Socket编程模式:,15.2 Winsock控件介绍,属性 BytesReceived属性 LocalHostName属性 LocalIP属性 LocalPort属性 Protocol属性 RemoteHost属性 RemoteHostIP属性 RemotePort属性 SocketHandle属性 (10) State属性,15.2 Winsock控件介绍,15.2 Winsock控件介绍,15.

9、2 Winsock控件介绍,2. Winsock控件方法 Accept方法 Bind方法 Close方法 (4) Connect方法 GetData方法和PeekData方法 Listen方法 (7) SendData方法,15.2 Winsock控件介绍,3. Winsock控件的事件 (1) Close事件 (2) Connect事件 (3) ConnectRequest事件 DataArrival Error SendProgress SendComplete事件,15.2 Winsock控件介绍,4. 协议的选择 在使用WinSock 控件时,首先需要考虑使用什么协议。 (1) 在收发

10、数据的时候,应用程序如果需要得到客户端或者服务器的确认信息,则使用TCP协议,在收发数据之前先建立明确的连接。 (2) 数据量特别大(如图像与声音文件),对数据传输质量要求很高时,则选用TCP协议。在连接建立之后,TCP 协议将维护连接并确保数据的完整性。不过,这种连接需要更多的计算资源。 (3) 考虑数据发送是间歇的,还是在一个会话内。如果发送通知一类的短消息,UDP 协议是更适宜的。UDP 协议适合发送少量的数据。这种方式不需要建立连接,同TCP相比只占用相对较少的资源。,15.3 用Winsock控件编写TCP 应用程序,一个TCP连接的建立过程要进行以下几个步骤: (1) 服务器端用L

11、isten侦听一个端口。 (2) 客户端用Connect向服务器端发出连接请求。 (3) 服务器端用Accept接受连接。 服务器端和客户端之间通过Senddata、GetData 和PeekData进行数据传送。 (5) 客户端或服务器端使用Close关闭连接。,15.3 用Winsock控件编写TCP 应用程序,例15.1 下面用Winsock控件编写一个聊天室的程序。这个程序采用TCP协议,需分别建立一个服务器端和客户端应用程序。此程序可以实现多个客户端与服务器端进行会话,服务器端可将接收的信息发送给全部已连接客户端,实现多人聊天。运行结果如图15.5所示。,15.3 用Winsock控

12、件编写TCP 应用程序,15.3 用Winsock控件编写TCP 应用程序,编写代码 定义所需常量。 编写出Form_Load事件过程。 Statuschange子程序,实现在连接状态更新。 定时扫描端口,实现当前状态的刷新。 当connect事件发生时刷新状态栏。 Close事件发生时,更新状态栏。 处理连接请求。 处理到达数据。,15.3 用Winsock控件编写TCP 应用程序,2. 客户端设计 客户端程序的实现过程是: (1) 客户程序设置RemoteHost属性,以便指定运行服务器程序的主机名。 (2) 设置RemotePort属性,以便指定服务器程序的侦听端口。 (3) 使用Con

13、nect方法,向服务器提出连接请求。 (4) 服务器接受客户端程序的请求,客户端程序产生Connect事件,就可以和SendData发送数据了。 (5) 当客户端程序接受到数据时,产生DataArrival事件。,15.3 用Winsock控件编写TCP 应用程序,(1) 窗体设计: 如 表15.6 窗体控件的属性设置,15.3 用Winsock控件编写TCP 应用程序,(2) 代码设计 如果未连接,则与服务器连接。 Private Sub Command1_Click() If winclient.State = 0 Then 判断是否连接 winclient.Connect End If

14、End Sub,15.3 用Winsock控件编写TCP 应用程序,发送文本框中的数据,如未连接则提示请先打开连接,如已连接则发送文本框中文本、本机IP地址和主机名。 Private Sub Command2_Click() If winclient.State 0 Then winclient.SendData Text1.Text +“ IP地址: “+winclient.LocalIP+_ “主机名“+winclient.LocalHostName Else MsgBox “请先打开连接“ End If End Sub,15.3 用Winsock控件编写TCP 应用程序, 服务器的IP和

15、端口号。 Private Sub Form_Load() winclient.RemoteHost = “127.0.0.1“ 可为服务器IP地址或服务器名:winclient.RemoteHost=“wx“ 使用127.0.0.1是为了在本地机上调试的需要 winclient.RemotePort =6898 End Sub,15.3 用Winsock控件编写TCP 应用程序, 处理到达数据。 Private Sub winclient_DataArrival(ByVal bytesTotal As Long) Dim dr As String winclient.GetData dr, ,

16、 bytesTotal List1.AddItem dr End Sub,15.4 用Winsock控件建立UDP程序,例15.2 将使用UDP协议建立一个聊天程序。运行结果如图15.6所示。在此,两个应用程序之间是平等的,处于同一地位,没有服务器端和客户端的区别。UDP程序不需建立显式的连接,所以在程序编写上比使用TCP方式简单。,15.4 用Winsock控件建立UDP程序,1. 建立聊天A程序的步骤 首先启动Visual Basic 6.0,创建标准工程。 (2) 编写代码 2. 建立聊天B程序的步骤 (1) 与窗体设计聊天A差不多,只把Winsock控件的名称设为Winsockb。 (2) 代码设计,15.5 Winsock API编程,声明API函数 API的声明比较复杂,如直接声明必须掌握C语言和Visual Basic语言的数据类型的异同,同时还需要正确理解参数传递形式和过程的命名规则。要在程序中声明一个DLL过程,需要在声明部分加上一个Declare语句。 如该过程返回一个值,应将其声明为:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号