最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

VB-NET控件

来源:动视网 责编:小OO 时间:2025-09-29 21:30:47
文档

VB-NET控件

来自:一起学习吧网第一节:Winsock控件的介绍Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等……废话不多说,来看看他有些什么重要的属性、方法和事件吧!在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择[部件],然后在部件对话框中选择"MicrosoftWinsockControl6.0",后确定即可。如果没有这个复选框的话,请点击[浏览
推荐度:
导读来自:一起学习吧网第一节:Winsock控件的介绍Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等……废话不多说,来看看他有些什么重要的属性、方法和事件吧!在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择[部件],然后在部件对话框中选择"MicrosoftWinsockControl6.0",后确定即可。如果没有这个复选框的话,请点击[浏览
来自:一起学习吧网

第一节:Winsock控件的介绍

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

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

在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择[部件],然后在部件对话框中选择"Microsoft Winsock Control 6.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.Accept requestID

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事件):

Private Sub Form_Load()

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

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

End Sub

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

Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)

        If wskServer.State <> sckClosed Then

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

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

        End If

End Sub

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

Private Sub cmdSend_Click()

         wskServer.SendData txtMessage.Text     '发送数据 

        txtContent.Text = vbCrLf & txtContent.Text & "我说:" & txtMessage.Text        '加到聊天记录中 

        txtContent.Text="" 

End Sub

Private Sub wskServer_DataArrival(ByVal bytesTotal As Long)

         Dim tempS As String

         wskServer.GetData tempS    '接收数据 

         txtContent.Text = txtContent.Text & "对方说:" & tempS & vbCrLf        '加到聊天记录中

End Sub

将上面的程序生成一个EXE文件(名为:Server.exe),然后新建一个工程以制作客户端。

客户端的制作:

界面如下:

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

Private Sub cmdConnect_Click()

         Dim IP As String

         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

End Sub

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

Private Sub cmdSend_Click()

         wskClient.SendData txtMessage.Text     '发送数据 

        txtContent.Text = vbCrLf & txtContent.Text & "我说:" & txtMessage.Text        '加到聊天记录中 

        txtContent.Text="" 

End Sub

Private Sub wskClient_DataArrival(ByVal bytesTotal As Long)

         Dim tempS As String

         wskClient.GetData tempS    '接收数据 

         txtContent.Text = txtContent.Text & "对方说:" & tempS & vbCrLf        '加到聊天记录中

End Sub

生成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:

Private Sub Form_Load()

        wskServer.LocalPort = 124

        wskServer.Listen

End Sub

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

Private Sub wskServer_ConnectionRequest(ByVal requestID As Long)

        If wskServer.State <> sckClosed Then

                wskServer.Close

        End If

        wskServer.Accept requestID

End Sub

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

Private Sub wskServer_DataArrival(ByVal bytesTotal As Long)

        'Dim tempS As String

        'wskServer.GetData tempS

        'txtMain.Text = tempS

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

        sendCode ("index.htm")

End Sub

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

Sub sendCode(fileName As String)

        Open App.Path & "\\" & fileName For Input As #1

        Dim tempS As String

        Do While Not EOF(1)

                Line Input #1, tempS

                wskServer.SendData tempS

        Loop

        Close #1

End Sub

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

Private Sub cmdClose_Click()

        wskServer.Close

        Unload Me

        End

End Sub

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

Private Sub wskServer_SendComplete()

wskServer.Close

End Sub

这里制作好了,将工程文件保存在[C:\emp]文件夹中,然后自己做一个网页名为index.htm也放在[C:\emp]中。这时按F5运行,然后打开IE,输入:http://127.0.0.1:124,这下等网页的显示吧。

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

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

实际上我们给Web服务器发送连接会有一个文本请求来说明自己要的是什么文件,比如你把上面的wskServer的DataArrival事件中的前三行取消注释,再次按上面的方法来运行一次,不过这次把请求网址改为:"http://127.0.0.1/1.htm",那么文本框中会显示浏览器的请求文本为(以我的浏览器为例):

GET /1.htm HTTP/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; MSIE 6.0; Windows NT 5.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。然后就是代码了:

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

Private Sub Form_Load() 

   clientCount = 0 

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

   sckServer(0).Listen      '开始侦听 

End Sub   

Private Sub sckServer_ConnectionRequest (Index As Integer, ByVal requestID As Long) 

   If Index = 0 Then 

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

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

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

      sckServer(clientCount).Accept requestID        '接受请求 

   End If 

End Sub

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

第五节:Web浏览器控件

在VB6.0中Web浏览器控件是WebBrowser,他的作用是让我们只要加入少量的代码,就能做出和IE功能一样强大的浏览器。(点击这里下载我制作的浏览器示例)

将WebBrowser添加到工具箱方法是:添加"部件"中选择Microsoft Internet Controls(SHDOCVW.dll),后点确定,WebBrowser在工具箱的图标为:

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

WebBrowser的主要属性:

属性名说明
LocationURL返回当WebBrower中网页的URL

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

WebBrowser的主要方法:

方法名作用
Navigate浏览网页。如:WebBrower.Navigate "http://junqing124.update.vip2.com"

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事件加入:If WebBrowser1.Busy = True Then WebBrowser1.Stop

在Text1的KeyPress事件加入:If KeyAscii = 13 Then WebBrowser1.Navigate Text1.Text

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

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

打开网站    取消

来自: http://hi.baidu.com/in13/blog/item/1bc47fd0f962058ba1ec9c2d.html 

文档

VB-NET控件

来自:一起学习吧网第一节:Winsock控件的介绍Winsock控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等……废话不多说,来看看他有些什么重要的属性、方法和事件吧!在VB6.0中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择[部件],然后在部件对话框中选择"MicrosoftWinsockControl6.0",后确定即可。如果没有这个复选框的话,请点击[浏览
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top