基于WinSock的网络编程技术

2010-09-20 06:28高永强张天刚
关键词:客户机监听服务器端

高永强,张天刚

(1.吕梁学院计算机系,山西吕梁033000;2.山西大同大学数学与计算机科学学院,山西大同037009)

基于WinSock的网络编程技术

高永强1,张天刚2

(1.吕梁学院计算机系,山西吕梁033000;2.山西大同大学数学与计算机科学学院,山西大同037009)

介绍了VB中Winsock控件的属性、方法、事件,并示例性地说明在VB中用Winsock控件实现网络通信的一种简易方法.

Winsock控件 TCP协议 C/S网络数据交换

近年来,随着计算机网络技术的发展,网络应用软件的需求日益增多,网络应用软件开发是当今计算机应用领域的热点,在诸多的网络通信协议中,TCP/IP协议被广为应用.在VB中Winsock控件能够方便的访问TCP/IP协议,开发人员只需设置一些属性以及编写一些事件代码,就可以实现计算机间数据的通信.

1 WinSock控件简介及通信模式

Socket是由加利福尼亚大学分校为UNIX操作系统开发的网络编程通信接口,而UNIX是目前的广为流行的网络操作系统,故Socket网络编程接口成为目前最为流行的接口之一.而本文使用Winsock控件正是基于Socket网络接口规范开发的,其通信本质是对Socket编程接口进行数据读写控制.如果两台计算机要进行数据交换,就可以通过Socket来建立连接,我们可以把这个过程假象为电话通话过程:呼叫者与被呼叫者通过拨号连接,只有当两者接通后,才可以进行自由通话,我们称呼叫者为“客户端”,被呼叫者为“服务器”,拨号码为“IP地址+端口”(其端口号范围为0-65535,但编程时一般选1024-65535端口,避免端口使用冲突,因0-1023已被预先定义).两机在建立连接前,“服务器”与“客户端”必须处于监听与发出呼叫.因此,基于WinSock控件网络通信,必须分别编制“客户”端和“服务器”端应用程序,即客户机/服务器(Client/ Server模式,简称C/S).

C/S模式的通信框图为:

图1 C/S模式通信图

2 利用VB中的WinSock控件来实现C/S模式的双向数据交换

通过上面介绍,我们了解了C/S模式的工作方式,它是目前广泛采用的一种网络通信工作模式.基于TCP/IP协议网络通信主要模式就是C/S模式,即客户端提出请求,服务器在监听时接收到请求后就提供请求服务.C/S操作流程是:服务器端先启动监听客户端请求是否到达服务器端口,客户端开辟一通信通道与服务器主机端口相连,并向服务器提出服务请求,等待并接受应答,继续提出服务请求,请求完成后,客户端关闭通信通道.

远程控制是基于C/S模式来实现的,所以程序结构分为两部分:服务器和客户端程序.服务器端程序要放在相对固定IP地址和端口上(可以编制设置功能来设置IP地址和端口)监听客户机端提出的请求;客户机端程序要向服务器程序IP地址和端口提出请求连接.客户机端和服务器端连接成功后,通过信息交换取得相应的服务.因此,在进行编程时,服务器端程序应设置Winsock控件的LocalPort属性和调用Listen方法来监听,客户机端程序则要设置Winsock控件的RemoteHost和RemotePort属性、调用Connect方法请求连接和Senddata方法来进行信息互换.下面简介C/S连接的实现方法.

1)建立连接

在编制服务器端程序时,设置一个监听端口和调用Listen方法进行监听,即设置Winsock控件Localport属性和调用Listen方法.当客户机端向服务器提出连接请求时触发ConnectionRequest事件,要接受连接请求调用该事件的Accept方法.

2)数据发送

连接完成后,客户机和服务器端程序就可以相互交换数据.发送和接收数据分别调用Senddata方法和触发 Dataarrival事件,并且接收端调用DataArrival事件的Getdata方法读取发送端发来的数据.

3)数据传输

要进行数据传输,客户机端的Localport属性与服务器端的Remoteport属性相同,服务器端的Remotehost属性与客户端的IP地址相同,发送机端调用 SendData方法发送信息,接收机端调用DataArrival事件内Getdata方法取得数据.

在实际数据传送时,数据传输量往往达几百MB乃至几GB,没有如此大数据缓冲区来存放数据.所以,采取数据包的方式进行数据传输,即把一个文件分成若干大小数据包.首先,设置传输数据包大小(如128KB),根据文件的大小计算出数据包数;接着,依次读取数据包放入数据缓冲区,然后,发送数据缓冲区中的数据到目的计算机上;同时在接收端,建立一个相同数据缓冲区,接收发送端传输过来的数据包,并将接收到的数据写入相应的文件中,这样就可以实现大文件的传输.但是,文件在传输过程中自然或人为因素造成网络连接突然中断时,文件必须重新传输,造成人力、资源的极大浪费,这时,我们采用“断点续传”技术.

下面通过实例,介绍在VB中如何利用Winsock控件实现文件分块传送和断点续传技术的实现.

1)服务器端主程序如下

在“通用”中声明数据包、文件信息等如下:

“传输文件”按钮单击事件代码:

2)客户机端主程序代码如下:

在“通用”中声明数据包、缓冲区大小、文件信息等如下:

Dim data()As Byte,Dreceived As Long数据缓冲区设置与接收到数据

'窗体初始化

Sstate=True设置状态为真

“连接”按钮单击事件代码:

3 结束语

本文介绍了WinSock控件的相关属性、方法和事件以及利用VB中的Winsock控件来实现C/S模式的进行数据交换的方法.同时列出了在服务器端和客户端的接收和发送数据及断电传输相应的代码.该程序在VB6.0环境中调试通过.

[1]黄淼云.VB 6.0办公自动化编程[M].北京:国防工业出版社,2000.

[2]王晓平,钟军.VisualBasic网络通信协议分析与应用实现[M].北京:人民邮电出版社,2003.

[3]高俊光.基于VB的Winsock控件的原理与应用[J].应用科技,2004,31(3):13-14.

[4]黄玲玲,杨剀,王颖.在VB中使用Winsock控件实现局域网通信[J].信息技术,2005(6):24-26.

Abstract:The attribute,method,and event of Winsock control in VB has been introduced.And a simplemethod of the use of Winsock control to realize network communication ispresented.

Key words:Winsock;control;TCP;C/S;network communication

〔编辑 高海〕

Network Programming Technology based on Winsock

GAO Yong-qiang1,ZHANG Tian-gang2
(1.Computer Department,Lüliang University,Lüliang Shanxi,033000; 2.School of Mathematics and Computer Science,Shanxi Datong University,Datong Shanxi,037009)

TP311

A

1674-0874(2010)05-0020-03

2010-05-28

高永强(1974-),男,山西临县人,讲师,研究方向:计算机应用.

猜你喜欢
客户机监听服务器端
Linux环境下基于Socket的数据传输软件设计
千元监听风格Hi-Fi箱新选择 Summer audio A-401
浅析异步通信层的架构在ASP.NET 程序中的应用
网络监听的防范措施
基于Qt的安全即时通讯软件服务器端设计
应召反潜时无人机监听航路的规划
局域网监听软件的设计
网页防篡改中分布式文件同步复制系统
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”