VB Winsock控件在C/S程序中的应用
- 格式:doc
- 大小:29.50 KB
- 文档页数:4
VB Winsock 控件的使用与介绍第一节: Winsock 控件的介绍Winsock 控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等废话不多说,来看看他有些什么重要的属性、方法和事件吧!在 VB6.0 中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择 [部件 ],然后在部件对话框中选择 "MicrosoftWinsock Control6.0",后确定即可。
如果没有这个复选框的话,请点击 [浏览]按钮后在打开的 [添加 ActiveX 控件 ]对话框选择MSWINSCK.ocx 后选择打开,再点确定即可。
Winsock 控件在工具箱中图标为。
Winsck 的主要属性:属性名说明 BytesReceived返回接收的数据,可以用GetData 方法来获取它LocalHostName返回本机名LocalIP返回本机 IPLocalPort返回或设置本机所用的端口,如果为0 则为随机产生Protocol返回通信所用的协议RemoteHostName返回通信对方的计算机名RemoteHostIP返回通信对方的IPState返回 Winscok 的当前状态,取值如下sckClosed (常量为 0):关闭状态sckOpen (常量为 1):打开状态sckListening (常量为2):侦听状态sckConnectionPending (常量为3):连接状态sckResolvingHost (常量为4):解析主机中sckHostResolved (常量为 5):已解析主机sckConnecting (常量为6):正在连接sckConnected (常量为 7):已经连接sckClosing (常量为8):客户端正在关闭sckError (常量为9):连接发生错误。
浅谈VB中Winsock控件的使用摘要WinSock是VB中创建网络应用程序的重要控件,本文就WinSock控件常用的属性和方法进行剖析,并结合实例说明。
关键词VB;WinSock;网络应用程序1 Winsock控件简介在VB中我们通常利用WinSock控件可以与远程计算机建立连接,并通过用户数据文报协议(UDP)或者传输控制协议(TCP)进行数据交换,这两种协议都可以用来创建客户与服务器应用程序。
2 Winsock控件常用属性和方法的剖析1)RemoteHost属性:远程主机的地址,LocalPort、RemotePort分别本地主机的端口和远程主机端口,对客户来说,该属性指定发送数据的本地端口,而对于服务器来说,这是用于侦听的本地端口,我们在设置这两个属性时必须保证两台主机的端口值相同;2)LocalIP属性:用于返回本地机的IP 地址,格式IP地址加点的字符串(xxx.xxx.xxx.xxx);3)Bind 方法:其作用是为控件“保留”一个本地端口;4)SendData方法:用于发送一条数据给另一台主机,其语法是:WinSock.SendData [要发送的数据];5)GetData 方法:当DataArrival事件出现时,代码调用GetData方法获取数据,并将数据存储在字符串变量中。
使用语法是:WinSock.GetData [接收数据的变量]。
3 使用WinSock控件实现的聊天室主要程序段3.1 主要控件说明3.2 主机之间连接程序Private Sub cmdConnect_Click()On Error GoTo ErrHandlerWith Winsock1.RemoteHost = Trim(txtRemoteIP).RemotePort = Trim(txtRemotePort)If .LocalPort = Empty Then.LocalPort = Trim(txtLocalPort)Frame2.Caption = .LocalIP.Bind .LocalPortEnd IfEnd WithStatusBar1.Panels(1).Text = “ Connected to “ & Winsock1.RemoteHost & “ “Exit SubErrHandler:MsgBox “Winsock failed to establish connection with remote server”, vbCritical End Sub3.3 窗体初始化程序Private Sub Form_Load()ShowMsgBox “Winsock UDT Chat” & vbCrLf & “by Theo Kandiliotis (ionikh@hol.gr)” & vbCrLf & vbCrLf & “F1 for help.”, vbInformation txtRemoteIP = Winsock1.LocalIPEnd Sub3.4 TEXT2输入框的KeyPress事件Private Sub Text2_KeyPress(KeyAscii As Integer)Static Last_Line_Feed As LongDim New_Line As StringIf Trim(Text2) = vbNullString Then Last_Line_Feed = 0If KeyAscii = 13 ThenNew_Line = Mid(Text2, Last_Line_Feed + 1)Last_Line_Feed = Text2.SelStartWinsock1.SendData New_LineStatusBar1.Panels(2).Text = “Sent “ & (LenB(New_Line) / 2) & “ bytes”End IfEnd Sub3.5 WINSOCK 接收到新的数据时的响应Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim New_Text As StringWinsock1.GetData New_TextText1.SelText = New_TextStatusBar1.Panels(2).Text = “Recieved “ & bytesTotal & “ bytes”End Sub参考文献[1]曾强聪.Visual Basic 6.0程序设计教程[M].北京:中国水利水电出版社,2003.。
VB_WinSock 网络编程(河南科技学院 计科系 001班,河南 新乡 453003)摘要 本文通过对一个VB 实例开发过程的介绍,阐述了VB 程序开发的一般方法。
并且在文中详细地介绍了客户端/服务器(C/S )模型,以及在VB 网络程序开发中对C/S 模型的应用。
另外,文中介绍了VB 中WinSock 控件的具体用法,以及VB 中WinSock 的各个属性和方法的设置与使用方法。
除此以外,本文还有VB 程序设计后期的异常处理与调试的方法的介绍。
关键词 VB 程序开发,C/S 模型, VB 程序调试,异常处理,WinSock 控件ABSTRACT During the development process of a example edited by the VB program, it gives us a way about the program development of VB. It also interpret the client/server model explicitly and how to compiler we use it. In the text it has the specific way about the control unit in the WinSock, including the every attribute and setting the method. Excepting it introduces the exception handling after the design for a program and the method of the program debugging.Keywords VB program development, Client/Server Model, VB program debugging, Exceptionhandling, WinSock control1 引言随着网络的发展,计算机应用、软件开发都有了一个新的发展方向——网络。
基于WinSock控件的网络程序设计作者:邵志方来源:《无线互联科技》2013年第04期摘要:VB的网络编程主要是基于控件,以Winsock控件为主开发基于客户机/服务器模式(client/server,简称C/S)的网络聊天程序具有广泛的应用价值。
关键词:Winsock;网络聊天;客户机/服务器模式;网络编程网络编程是计算机领域发展的一个流行趋势,而VB提供了一系列的网络编程控件,常用的VB网络编程控件有Winsock,Inernet Transfer,webBrower。
下面介绍Winsock控件的具体应用。
1 基于Winsock控件的开发模式Winsock控件采用的是客户机/服务器模式(Client/Server,简称C/S)。
此模型包括客户机和服务器应用程序。
客户应用程序向服务器应用程序提出请求服务,服务器程序侦听到了客户的请求后对客户的请求作出适当的响应,即对客户提供服务。
2 Winsocket控件详解2.1 主要属性LocalHostName:返回本机名字;LocalIP:返回本地计算机IP地址;LocalPort:返回或设置侦听端口;Protocol:返回或设置Winsock所用的协议(TCP或UDP);RemoteHost:返回或设置远程计算机的名称;RemoteHost IP:返回远程计算机的IP地址;RemotePort:连接套接字端口值;State:返回控件当前的状态。
2.2 主要方法⑴Listen:用于服务器程序,等待客户访问;⑵Connect:用于向远程主机发出连接请求;⑶Accept:用于接受一个连接请求;⑷Senddata:用于发送数据;⑸Getdata:用来取得接收到的数据;⑹Close:关闭当前连接。
2.3 主要事件ConnectionRequest:客户机向服务器提出请求服务时所触发的事件。
通常与Accept方法一同使用,用来接受客户机的连接请求。
DataArrival:当客户端和服务器端有信息发送来时,就会触发该事件。
VB6通过winsock控件数组实现客户端和服务器多对一通信在VB6中使用winsock控件需要引用Microsoft Winsock Control 6.0部件使用winsock控件可以实现客户端和服务器间C/S结构的通信,如果把客户端和服务器放置于同一台电脑中,并且将客户端winsock 的RemoteHost设置为本机IP,则可以实现客户端程序和服务端程序间的自由通信。
在应用程序之间采用winsock通信比内存共享等方法更简单快捷,同时也更安全。
在客户端中添加一个窗体,拖拽一个winsock控件到该窗体上。
Private Sub Form_Load()Me.Winsock1.RemoteHost = "192.168.1.5"Me.Winsock1.RemotePort = 10002Me.Winsock1.ConnectEnd SubRemoteHost代表需要连接的远程服务器IP地址,局域网中的通信可以使用路由器分配的IP地址。
RemotePort代表端口号,服务器和客户端通过该端口进行连接。
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim strGet As String'接收字符串并写入T ext1控件中Winsock1.GetData strGetText1.Text = strGetEnd Sub当客户端的winsock接收到服务器发送来的数据后会触发Winsock1_DataArrival事件,利用GetData方法可以将数据读取出来,一般来说将数据读取到byte()数组中是最好的,因为利用字节数组可以收发图片、音频等文件,本例中为了演示所以直接用一个字符串变量来读取数据了。
Dim strSet As StringWinsock1.SendData strSet客户端向服务器发送数据可以用SendData方法,该方法同样可以发送字节数组,这里为了演示所以发送了个字符串。
vb中winsock简单实例VB中的Winsock简单实例Winsock是一种来自于VB的库,它允许我们通过网络进行数据传输。
使用Winsock可以在计算机之间建立网络连接,发送和接收数据包等。
本文将为您介绍如何在VB中创建和使用Winsock的简单实例。
首先,我们需要了解一些基本的网络概念。
在计算机网络中,有两种常见的通信协议:TCP和UDP。
TCP(传输控制协议)提供可靠的数据传输,而UDP(用户数据报协议)提供不可靠但更快的数据传输。
在本文中,我们将重点介绍使用TCP进行数据传输的Winsock实例。
第一步是在VB中添加Winsock控件。
打开VB开发环境,并在工具箱中找到Winsock控件。
将其拖放到您的表单中。
第二步是为Winsock控件设置属性。
选中Winsock控件,然后在属性窗口中设置以下属性:- LocalPort:这是本地使用的端口号。
您可以选择任意未被其他应用程序使用的端口号。
- Protocol:选择TCP协议。
- RemoteHost:指定远程主机的IP地址。
您可以输入主机名或IP地址。
- RemotePort:指定远程主机的端口号。
这是目的地主机上的应用程序正在监听的端口号。
第三步是编写VB代码来建立连接并发送数据。
在表单中的代码窗口中添加以下VB代码:Private Sub Command1_Click()Winsock1.Connect '建立与远程主机的连接End SubPrivate Sub Command2_Click()Winsock1.SendData "Hello World" '向远程主机发送数据End SubPrivate Sub Winsock1_Connect()MsgBox "连接成功" '连接成功时显示一条消息End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim data As StringWinsock1.GetData data '接收从远程主机传输过来的数据MsgBox "接收到的数据:" & dataEnd Sub在上面的代码中,Command1按钮的Click事件将建立与远程主机的连接。
VB Winsock控件在C/S程序中的应用
【摘要】Winsock控件对用户来说是不可见的,它给程序设计人员提供了访问TCP和UDP网络服务的方便快捷途径,可以在Microsoft Access、Visual Basic、Visual C++或Visual FoxPro中轻松使用它编写客户或服务器应用程序,程序设计人员不必了解TCP的细节或调用低级的Winsock API,只需要通过设置Winsock 控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可进行双向数据交换。
【关键词】Winsock控件;程序设计;数据交
1.C/S模式
C/S模式又称Client/Server或客户/服务器模式,是一种分布式结构,其结构形式通常有两层模型和三层模型。
C/S模式是模块化编程的逻辑扩展。
基于模块的程序设计把大的软件分解成较小的部分,也就是模块,从而方便开发和维护。
C/S模式把基于模块化程序设计思想更推进一步:它允许模块可以不在同一存储空间中运行。
在这种体系中,调用模块就成为客户机Client(请求一个服务),而被调用模块就成为服务器Server(提供了服务)。
2.通信协议
在使用WinSock控件时,可以使用的协议包括TCP和UDP。
2.1TCP协议控件是基于连接的协议,可以将它同电话系统相比
在开始数据传输之前,用户必须先建立连接。
在收发数据的时候,应用程序需要得到客户端或者服务器的确认信息,或数据量特别大(例如图象与声音文件)一般使用TCP协议。
TCP协议将维护连接并确保数据的完整性。
2.2UDP协议是一种无连接协议,两台计算机之间的传输类似于传递邮件
消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接,数据发送是间歇的,UDP协议适合发送少量且可靠性要求不高的数据。
鉴于安全性、完整性的原因,应选用TCP协议。
3.应用实例
使用TCP协议创建应用程序,首先明确该程序师作为服务端还是客户端。
创建服务端程序就意味着该程序能够在指定的端口进行“监听”,而客户端则能够提出请求,服务端能够接受请求并实现连接。
一旦连接建立起来,客户端和服务端就能够自由地进行通信。
服务器端的设计。
3.1使用localport属性,设置好服务器端侦听端口。
3.2使用listen方法,使服务器端处在侦听状态。
3.3客户端发出连接请求后触发winsock控件的ConnectionRequest事件。
3.4在ConnectionRequest事件中用Accept方法来接收客户端的一个连接请求。
3.5用GetData方法和SendData方法接收和发送数据制作服务器设计第一、二步的实现Pivate Sub Form_Load() wskServer.LocalPort= 1024
3.5.1设置好localPort作为侦听端口wskServer.Listen。
3.5.2使用listen使服务端处在侦听状态End Sub。
服务器设计第三、四步的实现(Winsock的Connect)。
Private Sub wskServer_ConnectionRequest(ByVal requestID As Long).
If wskServer.StatesckClosed Then.
wskServer.Close。
这里要先关闭,要不会报错wskServer.Accept requestID
3.5.3在ConnectionRequest中用Accept方法来接收客户端的连接请求
End If
End Sub
服务器设计第五步的实现:Private Sub cmdSend_Click()wskServer.SendData txtMessage.Text’发送数据txtContent.Text= vbCrLf& txtContent.Text&”我说:
& txtMessage.Text
…VbCrLf表示回车换行,将发送出去的内容显示在txtContent控件中txtContent.Text=…………End Sub Private Sub wskServer DataArrival(ByVal bytesTotalAs Long)
Dim tempS As String
wskServer.GetData tempS’接收数据txtContent.Text=txtContent.Text&”对方说:”& tempS& vbCrLf’加到聊天记录中
End Sub
3.6客户端的设计
3.6.1设置RemoteHost,即你要连接IP。
3.6.2设置好RemotePort,即通信的端口号,要与服务端的一致。
3.6.3使用Connect方法向服务端发出连接请求。
3.6.4如果服务端同意连接请求则触发Connect事件。
3.6.5收发数据
客户端设计第一、二、三步的实现:Private Sub cmdConnect_Click()Dim lP As String
IP=InputBox(”请输入要连接的IP”,”输入的IP”,”127.0.0.1”)’连接的IP默认为本机
wskClient.RemoteHost= IP
设置RemoteHost,即你要连接IP也可输入主机名wskClient.RemotePort= 1024,设置好RemotePort,即通信的端口号,要与服务端的一致wsk Client。
Connect。
3.7使用Connect方法向服务端发出连接请求cmdConnect.Enable
d= 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
4.测试运行
分别生成EXE文件(名为:Server.ext和Client.exe)。
在本机上试运行。
运行方法是先打开Server.exe,后打开Client。
exe,然后在Client.exe点击连接按钮,连接地址为”127.0.0.1”,确定,然后在下面的文本框输入内容点发送按钮。
在建立连接后Server.exe的操作万法和Client.exe的操作方法一样。
此时在服务器程序或客户端程序的消息发送文本框中键入聊天消息,可以看到同样的文字出现在另一个程序的消息接收文本框中。
至此这个C/S模式聊天应用程序功能测试成功,运行正常。
■
【参考文献】
[1]郭飞军.基于B/S的航海类函授在线考试系统的设计[J].中国成人教育, 2011,(02):47-48.
[2]赵陈粟.基于校园网的高校人事管理信息系统分析与设计[J].山东英才学院学报,2010,(03):61-64.
[3]洪雅敏.基于B/S计算机基础在线教学系统的设计与实现[J].兰州工业高等专科学校学报, 2011,(01) :58-61.
[4]高祖彦.基于的网络教学系统设计与实现[J].恩施职业技术学院学报,2010,(02):70-72.。