VBNET控件.docx

上传人:b****2 文档编号:691820 上传时间:2023-04-29 格式:DOCX 页数:13 大小:22.62KB
下载 相关 举报
VBNET控件.docx_第1页
第1页 / 共13页
VBNET控件.docx_第2页
第2页 / 共13页
VBNET控件.docx_第3页
第3页 / 共13页
VBNET控件.docx_第4页
第4页 / 共13页
VBNET控件.docx_第5页
第5页 / 共13页
VBNET控件.docx_第6页
第6页 / 共13页
VBNET控件.docx_第7页
第7页 / 共13页
VBNET控件.docx_第8页
第8页 / 共13页
VBNET控件.docx_第9页
第9页 / 共13页
VBNET控件.docx_第10页
第10页 / 共13页
VBNET控件.docx_第11页
第11页 / 共13页
VBNET控件.docx_第12页
第12页 / 共13页
VBNET控件.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

VBNET控件.docx

《VBNET控件.docx》由会员分享,可在线阅读,更多相关《VBNET控件.docx(13页珍藏版)》请在冰点文库上搜索。

VBNET控件.docx

VBNET控件

来自:

一起学习吧网

第一节:

Winsock控件的介绍

Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等……

废话不多说,来看看他有些什么重要的属性、方法和事件吧!

在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:

在工具箱上右击,选择[部件],然后在部件对话框中选择"MicrosoftWinsockControl6.0",后确定即可。

如果没有这个复选框的话,请点击[浏览]按钮后在打开的[添加ActiveX控件]对话框选择MSWINSCK.ocx后选择打开,再点确定即可。

Winsock控件在工具箱中图标为

Winsck的主要属性:

属性名

说明

BytesReceived

返回接收的数据,可以用GetData方法来获取它

LocalHostName

返回本机名

LocalIP

返回本机IP

LocalPort

返回或设置本机所用的端口,如果为0则为随机产生

Protocol

返回通信所用的协议

RemoteHostName

返回通信对方的计算机名

RemoteHostIP

返回通信对方的IP

State

返回Winscok的当前状态,取值如下

∙sckClosed(常量为0):

关闭状态

∙sckOpen(常量为1):

打开状态

∙sckListening(常量为2):

侦听状态

∙sckConnectionPending(常量为3):

连接状态

∙sckResolvingHost(常量为4):

解析主机中

∙sckHostResolved(常量为5):

已解析主机

∙sckConnecting(常量为6):

正在连接

∙sckConnected(常量为7):

已经连接

∙sckClosing(常量为8):

客户端正在关闭

∙sckError(常量为9):

连接发生错误

Winsock的主要方法:

方法名

作用

listen

使服务器程序处于侦听状态,等待客户端的连接请求

connect

用于客户端向远程发送一个连接请求,语法:

Winsock.connect[IP,Port]

Accept

用于服务器接收一个远程客户端的连接请求,语法:

Winsock.AcceptrequestID

sendData

用于向远程发送数据,语法:

Winsock.sendData数据

getData

用于接收远程发送来的数据,语法:

Winsock.getData变量

Close

关闭通信

Winsock的主要事件:

事件名

说明

Connect

当服务器接收客户端请求时,服务端发生的事件

DataArrival

有数据到达时发生的事件,可以在这个事件中来getData发送来的数据

ConnectionRequest

客户端用Connect方法时服务器发生的事件,可以在这个事件中来Accept一个连接请求

SendProgress

发送数据中发生的事件,可以在这个事件中来标示当前已经发送多少数据

SendComplete

发送数据完成发生的事件

Error

通信发生错误时发生的事件

Close

关闭通信时发生的事件

这节我们详细介绍了Winsock控件的属性、方法和事件等,只要拥有这些,我们就可以编很多功能强大的软件了。

在接下来的几课中我们将以实例来说明Winsock的应用。

第二节:

Winsock聊天器实例

上一节我们介绍了Winsock控件,这节我们将以一个聊天器的实例来说说如何应运Winsock控件进行计算机之间的通信。

我也做了一个聊天器,程序点击这里下载。

这节课我们做了用于通信的服务端和客户端,在制作他们之前,先看看服务端和客户端是如何设计的:

(注:

要复制本页代码时要注意去掉不正确的字符如?

号)

服务端的设计:

1、设置好localPort作为侦听端口

2、使用listen使服务端处在侦听状态

3、客户端发出连接请求后触发ConnectionRequest事件

4、在ConnectionRequest中用Accept方法来接收客户端的连接请求

5、收发数据

客户端的设计:

1、设置RemoteHost,即你要连接IP

2、设置好RemotePort,即通信的端口号,要与服务端的一致

3、使用Connect方法向服务端发出连接请求

4、如果服务端同意连接请求则触发Connect事件

5、收发数据

服务端的制作:

界面如下:

服务器设计第一、二步的实现(窗体的Load事件):

PrivateSubForm_Load()

       wskServer.LocalPort=1024   '1、设置好localPort作为侦听端口

       wskServer.Listen     '2、使用listen使服务端处在侦听状态

EndSub

服务器设计第三、四步的实现(Winsock的Connect):

PrivateSubwskServer_ConnectionRequest(ByValrequestIDAsLong)

       IfwskServer.State<>sckClosedThen

              wskServer.Close    '这里要先关闭,要不会报错

              wskServer.AcceptrequestID     '4、在ConnectionRequest中用Accept方法来接收客户端的连接请求

       EndIf

EndSub

服务器设计第五步的实现:

PrivateSubcmdSend_Click()

        wskServer.SendDatatxtMessage.Text    '发送数据

       txtContent.Text=vbCrLf&txtContent.Text&"我说:

"&txtMessage.Text       '加到聊天记录中

       txtContent.Text=""

EndSub

PrivateSubwskServer_DataArrival(ByValbytesTotalAsLong)

        DimtempSAsString

        wskServer.GetDatatempS   '接收数据

        txtContent.Text=txtContent.Text&"对方说:

"&tempS&vbCrLf       '加到聊天记录中

EndSub

将上面的程序生成一个EXE文件(名为:

Server.exe),然后新建一个工程以制作客户端。

客户端的制作:

界面如下:

客户端设计第一、二、三步的实现:

PrivateSubcmdConnect_Click()

        DimIPAsString

        IP=InputBox("请输入要连接的IP","输入的IP","127.0.0.1")      '连接的IP默认为本机

        wskClient.RemoteHost=IP     '1、设置RemoteHost,即你要连接IP

        wskClient.RemotePort=1024       '2、设置好RemotePort,即通信的端口号,要与服务端的一致

        wskClient.Connect     '3、使用Connect方法向服务端发出连接请求

        cmdConnect.Enabled=False

EndSub

客户端设计第五步的实现(发送和接收代码和服务器一致,只不过控件名不同而已):

PrivateSubcmdSend_Click()

        wskClient.SendDatatxtMessage.Text    '发送数据

       txtContent.Text=vbCrLf&txtContent.Text&"我说:

"&txtMessage.Text       '加到聊天记录中

       txtContent.Text=""

EndSub

PrivateSubwskClient_DataArrival(ByValbytesTotalAsLong)

        DimtempSAsString

        wskClient.GetDatatempS   '接收数据

        txtContent.Text=txtContent.Text&"对方说:

"&tempS&vbCrLf       '加到聊天记录中

EndSub

生成EXE文件(名为:

才.exe)。

这样一个聊天器就做好了,在本机也可以试试,运行方法是先打开Server.exe,后打开Client.exe,然后在Client.exe点击连接按钮,连接地址为"127.0.0.1",确定,然后在下面的文本框输入内容点发送按钮即可。

在建立连接后Server.exe的操作方法和Client.exe的操作方法一样。

试试吧!

最后说一句:

实际上我们会发现这样的聊天器怎么会分为两个部份呢,这样多不方便。

实际上我们可以合成一个,即在一个窗体上放一个wskServer再放一个wskClient,这样就OK了,这里是为了更好的说明就放分成两个的。

还有就是这个聊天器是基于TCP协议,这个协议保证了通信的数据不会丢失,这个协议只能一对一,但在实际中我们聊天的对象不会是一个人吧,这样就要用到可以一对多但不保证数据能完全到达UDP协议了,简单而言TCP用于一对一,而UDP可以运用于一对多。

下一节我们将介绍用Winsock制作一个简单的Web服务器。

第三节:

Winsock制作Web服务器

在本节中,我们将制作一个简单的Web服务器(点击这里下载源文件)。

按上节的说法,我们可以把Web服务器看是一个服务端,而浏览器则是一个一个的客户端,他们以一个相同的端口(如HTTP默认为80,FTP默认为21),所以就能通信。

他们的工作流程大概如下:

首先Web服务器在某一端口上等待浏览器的连接,然后浏览器向目标Web服务器发出要求浏览某一网页的请求,最后Web服务根据请求发送相应的网页源文件给浏览器。

用过ASP的都知道,我们有一个Web服务器叫IIS,这个服务器就是根据浏览器的请求而产生相应的源码然后发送到用户的浏览器上的。

别的不多说,界面很简单:

将文本框设置可以显示多行文本。

为了有别于其他,我们这个Web服务器将使用端口124。

制作流程如下:

在Form_Load事件中将服务器的侦听端口设为124:

PrivateSubForm_Load()

       wskServer.LocalPort=124

       wskServer.Listen

EndSub

在wskServer的ConnectionRequest事件中接受客户端(浏览器)的连接:

PrivateSubwskServer_ConnectionRequest(ByValrequestIDAsLong)

       IfwskServer.State<>sckClosedThen

              wskServer.Close

       EndIf

       wskServer.AcceptrequestID

EndSub

在wskServer控件的DataArrival事件中加当浏览器的请求文本来时发送源代码过去:

PrivateSubwskServer_DataArrival(ByValbytesTotalAsLong)

       'DimtempSAsString

       'wskServer.GetDatatempS

       'txtMain.Text=tempS

       txtMain.Text=txtMain.Text&"一个IP为["&wskServer.RemoteHostIP&"]连接对象"&vbCrLf

       sendCode("index.htm")

EndSub

这里在窗体模块(窗体声明)中加入一个发送源代码的sendCode的Sub过程:

SubsendCode(fileNameAsString)

       OpenApp.Path&"\"&fileNameForInputAs#1

       DimtempSAsString

       DoWhileNotEOF

(1)

              LineInput#1,tempS

              wskServer.SendDatatempS

       Loop

       Close#1

EndSub

在cmdClose的Click事件中关闭窗体和服务:

PrivateSubcmdClose_Click()

       wskServer.Close

       UnloadMe

       End

EndSub

最后要在wskServer的SendComplete事件中加入如下代码:

PrivateSubwskServer_SendComplete()

wskServer.Close

EndSub

这里制作好了,将工程文件保存在[C:

\temp]文件夹中,然后自己做一个网页名为index.htm也放在[C:

\temp]中。

这时按F5运行,然后打开IE,输入:

http:

//127.0.0.1:

124,这下等网页的显示吧。

这只是一个简单的Web服务器,只能给你们说明一些原理,下面说几个问题:

1、我们如何知道客户端要的是哪个文件:

实际上我们给Web服务器发送连接会有一个文本请求来说明自己要的是什么文件,比如你把上面的wskServer的DataArrival事件中的前三行取消注释,再次按上面的方法来运行一次,不过这次把请求网址改为:

"http:

//127.0.0.1/1.htm",那么文本框中会显示浏览器的请求文本为(以我的浏览器为例):

GET/1.htmHTTP/1.1

Accept:

image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,*/*

Accept-Language:

zh-cn

Accept-Encoding:

gzip,deflate

User-Agent:

Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)

Host:

127.0.0.1:

124

Connection:

Keep-Alive

你看第一行就知道客户端要的是什么文件了。

2、为什么在wskServer的SendComplete事件中要关闭服务器:

回答这个问题你可以将wskServer.Close注释起来再次运行,你会发现要很久(或要刷新网页)才会有页面出现,这是因为如果服务一直在的话,那么浏览器以为服务的数据没有传完,就一直等待,所以要在传送完源代码时关闭服务器。

3、能不能用Winsock做自己的浏览器:

能。

我们可以用Winsock下载网页的源代码,但在VB中我们有另一个功能更强大的控件来做我们的浏览器,将在下节中说明具体的做法。

第四节:

Winsock制作多客户服务器

我们前面的程序都只说到使用Winsock制作一对一的连接,实际上我们使用控件数组的话,那么可以制作一个多客户连接的服务器。

不过本质上还是一对一,不过是服务器上不只一个Windsock而已。

我们在窗体上放一个Winsock,将他的Name改为sckServer,index属性改为0。

然后就是代码了:

clientCountAsInteger      '定义一个窗体级变量来记录客户的连接数。

PrivateSubForm_Load()

  clientCount=0

  sckServer(0).LocalPort=2000      '设置好侦听端口

  sckServer(0).Listen     '开始侦听

EndSub  

PrivateSubsckServer_ConnectionRequest(IndexAsInteger,ByValrequestIDAsLong)

  IfIndex=0Then

    clientCount=clientCount+1     '客户请求多一个

    LoadsckServer(clientCount)       '载入一个服务端为新增的客户服务

    sckServer(clientCount).LocalPort=0  '侦听端口为随机,不能设为2000,因为有sckServer(0)在使用了。

    sckServer(clientCount).AcceptrequestID      '接受请求

  EndIf

EndSub

看了代码明白了吧,所谓多客户服务器就是多个Winsock服务端在为客户服务而已,当然我们不用同步的时候也可以用一个Winsock来连续的关闭、连接来做多客户服务器也是可以的。

第五节:

Web浏览器控件

在VB6.0中Web浏览器控件是WebBrowser,他的作用是让我们只要加入少量的代码,就能做出和IE功能一样强大的浏览器。

(点击这里下载我制作的浏览器示例)

将WebBrowser添加到工具箱方法是:

添加"部件"中选择MicrosoftInternetControls(SHDOCVW.dll),后点确定,WebBrowser在工具箱的图标为:

WebBrowser的功能强大是由众多方法、属性和行为组成的,下面说下它的主要属性、方法和行为。

WebBrowser的主要属性:

属性名

说明

LocationURL

返回当WebBrower中网页的URL

LocationName

返回当WebBrower中网页的标题,即HTML中的Title标记

WebBrowser的主要方法:

方法名

作用

Navigate

浏览网页。

如:

WebBrower.Navigate""

GoBack

后退

GoForward

前进

GoHome

浏览主页

GoSearch

打开搜索页面

Refresh

刷新

Stop

停止

WebBrowser的主要事件:

事件名

说明

DownloadBegin

页面开始下载

DownloadComplete

页面下载完毕

TitleChange

浏览器的Title改变,即浏览新的页面

这里简单说了下WebBrower控件的部份属性、方法和行为。

下面是一个示例:

上面的四个按钮的名字分别为Command1、Command2、Command3、Command4,下面的文本框为Text1,最下面的是一个WebBrowser,名字为WebBrowser1

在Command1的Click事件加入:

WebBrowser1.GoBack

在Command2的Click事件加入:

WebBrowser1.GoForward

在Command3的Click事件加入:

WebBrowser1.Refresh

在Command4的Click事件加入:

IfWebBrowser1.Busy=TrueThenWebBrowser1.Stop

在Text1的KeyPress事件加入:

IfKeyAscii=13ThenWebBrowser1.NavigateText1.Text

按F5运行,在文本输入网址后回车看看效果吧!

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2