制定不同费率。如图3.4所示
图3.4用户费率信息表图
第四章通信过程与VB.NET中的通信类
4.1通信过程
网吧计费系统有异于其它信息管理系统,它的工作原理如图4.1所示,因此服务器端与客户端机器通信就必然会采用异步通信的方式,在主程序启动后,程序在后台同时启动别一个线程,通过Socket对象开始侦听客户端。当客户端传入一个连接请求时,后台程序将接受该请求,同时实例化一个Socket对象负责与该客户端的Socket对象进行通信。如果程序没有退出,进入下一个侦听循环,则后台程序就实现了一点对多点的通信模式。
图4.1后台程序工作流程图
服务器端与客户端的具体通信过程如图4.2所示。具体工作流程先是客户端发出连接请求,正常情况,服务器端必定接受请求。客户端再发送一个连接信息,该信息包含客户端机器的一些信息,服务器端将接受该信息,并对其进行相应处理,再回发一个确认信息给客户端。这样就表现服务端与客户端已成功连接。此时,客户端发送登录信息,或在登录成功后,间期性发送连接信息,或在下机时发送注销信息,同时服务器端对这些信息进行相应处理,并反馈客户端。这就是一个完整的客户端与服务器端的通信过程。
图4.2服务器端与客户端的完整通信过程图
4.2VB.NET中的通信类
TCP协议是TCP/IP协议簇中的传输层中的一个协议,也是TCP/IP协议簇最为重要的协议之一。TCP协议是一种面向连接的,并提供可靠的、完整的、安全的数据传送的网络协议。它提供可靠字节服务的协议。在网络中通过TCP协议传送数据之前,发送方和接收方之间必须建立连接,这种连接就是所谓的"握手"。网络中TCP应用,如同日常生活中的打电话,在通话之前,首先要拨号、震铃(犹如发送方向接收方提出TCP连接申请,并等待TCP连接申请通过)。直到对方拿起电话时(发送方和接收方的TCP连接已经建立),就可以通话了(传送数据)。本系统是基于TCP/IP协议网络数据传送的。
在.NetFrameWorkSDK中提供了很多用以实现TCP协议或与之相关协议的类库,现介绍在系统设计中用到的5个类,即:TcpListener类、TcpClient类、NetworkStream类、StreamReader类和StreamWriter类。TcpListener主要用以侦听端口号,并接收远程主机的TCP连接申请;TcpClient主要用以提出TCP连接申请;NetworkStream类是实现TCP数据传输的基础数据流;StreamReader类的作用是通过操作NetworkStream,实现从网络接收数据;StreamWriter类的作用是通过操作NetworkStream,实现向网络传输数据。
4.2.1TcpListener类
在本系统设计中,TcpListener类设计在服务器端,主要作用是从TCP网络客户端侦听连接,TcpListener类基于Socket类,提供更高理念级别的TCP服务。可以使用TcpListener从TCP客户端侦听连接。像FTP和HTTP这样的应用层协议是在TcpListener类的基础上建立的。TcpListener类常用方法、属性及其说明,如表4.1、表4.2所示:
方法
说明
AcceptSocket
接受挂起的连接请求
AcceptTcpClient
接受挂起的连接请求
Pending
确定是否有挂起的连接请求
Start
开始侦听网络请求
Stop
关闭侦听器
表4.1TcpListener类常用方法及其说明表
属性
说明
LocalEndpoint
获取当前TcpListener的基础EndPoint
Active
获取一个值,该值指示TcpListener是否正主动侦听客户端连接
Server
获取基础网络Socket
表4.2TcpListener类常用属性及其说明表
4.2.2TcpClient类
在本系统设计中,TcpClient类设计在客户端,主要为TCP网络服务提供客户端连接。TcpClient是类基于Socket类构建,它以更高的抽象程度提供TCP服务。TcpClient提供了通过网络连接、发送和接收数据的简单方法。TcpClient类常用方法、属性及其说明,如表4.3、表4.4所示:
方法
说明
Close
关闭TCP连接
Connect
使用指定的主机名和端口号将客户端连接到TCP主机
GetStream
返回用于发送和接收数据的流
表4.3TcpClient类类常用方法及其说明表
属性
描述
LingerState
有关套接字逗留时间的信息
NoDelay
一个值,该值在发送或接收缓冲区未满时启用延迟
ReceiveBufferSize
接收缓冲区的大小
ReceiveTimeout
TcpClient在启动后为接收数据而等待的时间长度
SendBufferSize
发送缓冲区的大小
SendTimeout
在您启动发送操作后TcpClient将为接收确认而等待的时间长度
表4.4TcpClient类类常用属性及其说明表
4.2.3NetworkStream类
NetworkStream类主要是提供用于网络访问的基础数据流。它主要是网络数据传输的载体,并提供同步、异步方式来访问网络数据流。在vb.net程序设设计过程中,经常利用NetworkStream作为传送(StreamWriter类)和接收(StreamReader类)数据的载体。NetworkStream类常用方法、属性及其说明,如表4.5、表4.6所示:
方法
说明
BeginRead
开始异步读者基础数据流
BeginWrite
开始异步写入基础数据流
Close
关闭流并可选择关闭基础套接字
EndRead
结束异步读取
EndWrite
结束异步写入
Flush
刷新流中的数据
Read
从流中读取数据
Seek
将流的当前位置设置为给定值
SetLength
设置流的长度
Write
将数据写入流
表4.5NetworkStream类中常用的方法及其说明表
(注:其中"BeginRead"、"EndRead"和"BeginWrite"、"EndWrite"是二对异步方法,起作用分别相当于"Read"和"Write"方法。)
属性
说明
CanRead
获取当前流是否支持读取
CanSeek
获取流是否支持查找。该属性总是返回false
CanWrite
获取当前流是否支持写入
DataAvailable
获取是否可以在流上读取数据
Length
流上可用数据的长度
Position
获取或设置流中的当前位置
表4.6NetworkStream类中属性及其说明表
4.2.4StreamReader类
StreamReader类能够实现对基础数据流的读操作,从而实现对经过基础数据流传送来的数据。StreamReader类常用方法、属性及其说明,如表4.7所示:
方法
说明
Close
关闭StreamReader并释放与阅读器关联的所有系统资源
DiscardBufferedData
允许StreamReader丢弃其当前数据
Peek
返回下一个可用的字符,但不使用它
Read
读取输入流中的下一个字符或下一组字符
ReadBlock
从当前流中读取最大数量的字符并从索引开始将该数据写入缓冲区
ReadLine
从当前流中读取一行字符并将数据作为字符串返回
ReadToEnd
从流的当前位置到末尾读取流
表4.7StreamReader类中常用的方法及其说明表
4.2.5StreamWriter类
StreamWriter类能够实现对基础数据流的写操作,从而实现提供基础数据流来传送数据。StreamWriter类常用方法及其说明,如表4.8所示:
方法
说明
Close
关闭当前的StreamWriter和基础流
Flush
清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流
Write
写入基础数据流
WriteLine
写入重载参数指定的某些数据,后跟行结束符
表4.8StreamReader类中常用的方法及其说明表
第五章系统的实现
创建系统数据库,服务器端程序和客户端程序后,就可以实现运行整个系统程序。
5.1公共模块
首先在服务器端程序的公共模块中添加以下代码,运行系统登录窗口:
SubMain()
Application.EnableVisualStyles()
Application.DoEvents()
Application.Run(NewFrmLogin)
EndSub
5.2服务器端的实现
服务器端主界面分为4部分:主菜单、工具栏
上一篇:
VB_net+SQL房地产评估系统(论文和程序)
下一篇:
这样睡觉减寿10年:仰卧睡姿更疲劳 蒙头易缺氧