求。
Accept:接受一个连接请求。
Senddata:发送数据。
Getdata:取得接收到的数据。
Close:关闭当前连接。
画一 一 事件: .鼍 一 暑 DataArrival:新数据到达。
ConnectionRequest:对方请求连接时接受连接请求。
Error:后台处理中出现错误。
. Close:对方关闭连接时出现。
2.3 Winsock控件支持的协议 Winsock控件支持TCP和UDP这两种协议, 两者都属于用TCP/IP协议。
TCP(Transfer Control Protoc01)是传输控制协议的简称,是基于连接的协 议,在数据传输之前必须先建立连接,
通信双方是 基于客户/服务器模型,必须分别建立客户应用程序 和服务器应用
程序。
UBP(用户数据报协议)协议是 一种无连接协议,通信双方之间的传输类似于传递 邮件:消息从一方发送到另一方,但是两者之阎没 有明确的连接,通信双方是对等的,单次传输的最 大数据量取决于具体的网络。
基于安全、可靠及功 能方面的考虑,本次
设计中使用的是TCP协议。
2.4通信的建立过程 利用Winsoek控件创建双方的通信过程如下: 基手TCP协议通信,需要分别建立客户应用程 序和服务器应用程序: 创建客户应用程序,就必须知道服务器的名称 或口地址(RemoteHost属性)和进行“侦听”的端 口(RemotePort属性),然后调用Connect方法。
创建服务器应用程序,就应设置一个收听端口 (LocalPort属性)并调用Listen方法。
当客户机 要连接时会发生ConnectionRequest事件。
为了完 成连接,可调用ConnectionRequest事件内的 Accept方法。
建立连接后,任何一方都可以收发 数据。
为了发送数据,可调用SendDam方法。
当 接收数据时会发生DataArrival事件。
调用 第26卷增刊2004-09【31】 骞、l泣止訇矽。
匕DataArrival事件内的GetData方法就可获取数 Private intmax As Long据。
(1)窗体Load事件: 基于UDP协议通信相对简单,为了传输数据, intMax=0首先要设置双方的端口(RemotePort和LocalPort) Winsock(0).LocalPort=1 00 1 ‘设置属性,~般双方端口号一样,同时设置对方IP 监听控件的端口号 (RemoteHostIP)地址。
这样通过调用SendData方 Winsock(0).Listen ‘监听法就可以发送信息,有数据到来触发DataArrival事 控件开始监听件,调用GetData方法接收已送来的信息。
(2)处理接收连接请求事件3环保“黑匣子”的GPRS服务器应 Dim I AsInteger If Index=0then 用程序的编程实现 Fori=l To intmax3.1程序功能 If Winsock(i).State=0 Then 环保“黑匣子”的GPRS服务器通过GPRS网 Winsock(i).Accept requestID络不断地接收各终端设备数据采集与控制系统检 ExitSub测的COD、PH、流量等实时数据,当工作站通过 End If ‘判断前面已经加载的接收控浏览器访问Intemet服务器时,经过权限确认,就 件里面是否有断开连接的,若有即可使用它来接收可以浏览所有在网上的由控制器采集的实时数据 新的连接请求和历史数据。
Next3.2关键编程 intmax=intmax+l 由于本系统需要接收多个连接请求,解决办法 Load Winsock(intmax)‘若没有,就重新加载就是创建控件数组,这样使用一个控件就可以同时 控件来接收新的连接请求接收多个连接请求。
利用这种方法,只需要创建新 ‘Winsock(intmax).LocalPort=0的控件实例(通过设置其索引属性),然后在新的 Winsock(intmax).Close实例上调用Accept方法即可。
下面是本文中