基于VB6.0的winsock控件的远程数据传输的方法
- 格式:doc
- 大小:28.50 KB
- 文档页数:5
利用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控件实现局域网通信是一种方便、快捷、高效的方法,可以实现不同电脑之间的数据交互和消息传递。
在实际开发中,我们可以根据具体需求和实际情况进行相应的调整和优化,提高系统的性能和稳定性。
VB网络通讯程序设计WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器并进行数据交换。
这两种协议都能用来创建客户端和服务端应用程序。
就像定时器控件一样,WinSock控件运行时没有一个可视的界面。
下面就是分别用TCP和UDP协议来创建的网络聊天软件。
TCP协议网络聊天程序的运行过程及原理第一步:建立连接主要过程是:由客户端程序向服务端程序发出连接请求,服务端程序收到并接受连接请求,至此客户机与服务器创建了数据交流通道。
第二步:开始聊天主要过程是:在客户机的“发送的信息”文本框中输入文字时,服务器端的“收到的信息”文本框中就会实时地显示相同的文字,反之亦然。
服务器的界面设计1.创建一个“标准 EXE”工程,选中“工程”菜单的“部件”,在控件中找到Microsoft Winsock Control并将其选中。
2.将Form1的名称改为Form_Load(),并在其中添加两个命令按钮(Command1的Caption属性为“退出”,Command2的Caption属性为“发送”)。
3.在窗体是添加三个TextBox控件,其名称分别为txtServerIP,txtSend和txtReceive。
4.在窗体上添加一个Winsock控件,将其Protocol(协议)属性设置为0(即sckTCPProtocol)。
服务器端的源代码:Private Sub Form_Load()'设置侦听端口WinsockServer.LocalPort = 10001'读取服务器的IP地址txtServerIP.Text = WinsockServer.LocalIP'开始侦听WinsockServer.ListenEnd SubPrivate Sub Command1_Click()'点击“退出”按钮后关闭应用程序Unload MeEnd SubPrivate Sub Command2_Click()'只要txtSend文本框的内容写好以后就由WinsockServer控件发送WinsockServer.SendData txtSend.TextEnd SubPrivate Sub WinsockServer_ConnectionRequest(ByVal requestID AsLong)'当收到连接请求时,Winsock处于侦听状态'此时应该使用Close方法关闭Winsock,然后使用Accept方法接受连接请求WinsockServer.CloseWinsockServer.Accept requestIDEnd SubPrivate Sub WinsockServer_DataArrival(ByVal BytesTotal As Long) '当客户端有信息发送来时,利用WinsockServer控件的GatData 方法读取数据'并将其显示在txtReceive文本框中Dim MyStr As StringWinsockServer.GetData MyStrtxtReceive.Text = MyStrEnd Sub运行界面如下图:客户端的界面设计1.创建一个新的“标准EXE”工程,并添加Winsock 控件。
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)”,即可等候远程客户端进行调用与连接。
基于 VB6.0实现西门子 PLC与 PC间的TCP通讯摘要摘要:主要介绍在Microsoft Visual Basic 6.0开发环境下,通过Winsock1控件,用以太网的方式实现PC机与西门子1200/1500PLC系统之间数据通信的方法,并把该通信方法用在环卫压缩设备控制系统中。
关键词:PLC,VB,通信Realization of TCP Communication between Siemens PLC and PC Basedon VB6.0Abstact:This paper introduces data communication method between PC applications,which take Visual Basic 6.0 as their programming language and SIMATIC S7-1200 or S7-1500 PLC.Keywords:PLC,VB,communication.众所周知,工业自动化监控系统一般是采用组态软件或高级语言开发,而采用组态软件开发是需要买软件授权才能交付,虽然开发速度快,但成本较高而且后期功能扩展不够灵活,也无法开发更加复杂的业务,如实现信息化和工业化的有机融合,因此如何帮助开发者降低开发成本、提高工作效率,快速开发出对行业有显著帮助和价值的自动化监控系统是本文所涉及的话题。
该控制系统由西门子S7-1200 PLC、PC机等构成,其中PLC由以下组成:1214CPU模块(带以太网口),数字量输入/输出模块,模拟量输入模块。
1监控系统的通信参数系统运行时需要在PC与PLC之间通信的参数主要有如下:PC→PLC:压缩设备电机启动和停止指令、压缩指令;PLC→PC:压缩设备液压系统压力、温度和液位值,接近开关信号以及拉线位移传感器值。
2监控系统软件程序设计VB通信程序Dim Start,Stop, Compress As ByteDim Palue, Temperature,Level,Displacement As SingleDim Limit(5) As Byte_______________________________Private Sub connect_Click()Winsock1.Close ‘关闭连接Winsock1.Rem oteHost = "192.168.2.5" ‘与PLC的IP地址Winsock1.RemotePort = "2000" ‘与PLC端口号Winsock1.connect ‘关建立连接End Sub_______________________________Private Sub Form_Load()Winsock1.Close ‘关闭连接End SubPrivate Sub Close_Click()Winsock1.Close ‘关闭连接End Sub_______________________________Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)If Winsock1.state <> sckClosed ThenWinsock1.CloseWinsock1.Accept requestID '接受具有 requestID 参数的'连接。
VC++ 6.0下使用Winsock控件的局域网通讯程序摘要介绍在VISCAL C++ 6.0 环境下,使用Winsock控件进行网络通讯的一种方法。
Winsock控件的使用简单,可以方便地应用在使用VC++进行编程的网络通讯程序中。
关键词Winsock控件局域网 VC6.0中图分类号:文献标识码:文章编号:引言随着计算机技术的发展和网络的不断普及,网络通讯程序的应用越来越普遍,各种软件开发平台也为网络通讯程序的开发提供了不同形式的类和控件。
在利用Visual C++ 进行开发时,可以使用Csocket类;在利用Visucal Basic 进行开发时,可以使用Winsock 控件。
有关Csocket类在VC中的使用和Winsock 控件在VB中使用,已经有许多文章、资料进行的介绍,这里不再赘述。
同时也应注意到,利用VC的CSocket类需要对网络通讯的机制和参数有较深的了解,需要较深的计算机知识。
虽然CSocket对Winsock进行了封装,但是它的函数调用仍然比较复杂,使用起来不容易。
与此相反,在利用VB编程时,各种控件的使用比较简单,不需要许多的参数。
利用VB中的Winsock 控件进行开发比较容易,但VB本身的功能不如VC强大,在进行开发时有时会受到一定程度的限制。
在VC中利用Winsock控件的使用难度则介于上述二者之间,只需对少许一些参数做简单设置即可。
如果在用VC编制程序时需要进行网络通讯而又不想花费过多的时间,在VC程序中插入Winsock控件是一种合适的方法。
利用Winsock控件可以编制一个简单的通讯程序,用于局域网之间的微机通讯。
一、Winsock控件的使用方法1.1通讯协议的选择Winsock控件提供了访问 TCP 和 UDP 网络服务的方便途径。
采用TCP协议可以提供双向的、可靠的、有序的和无重复投递的数据流。
TCP允许创建和维护与远程计算机的连接,连接两台计算机就可彼此进行数据传输。
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方法,该方法同样可以发送字节数组,这里为了演示所以发送了个字符串。
在各种单片机应用系统的设计中,常常遇到单片机与PC的通信问题,在速度要求不高、传送距离不远的场合一般采用RS 232标准串行接口实现,在传送距离较远的场合,也有学者研究通过网络实现PC间的通信。
但是,要同时满足高速度和远距离PC与单片机通信这是一个迫切需要解决的问题。
随着信息技术的发展,计算机和网络越来越普及,对单片机的远程控制与测量的要求也越来越多。
本文在结合现有研究的基础上,对相关的设计进行一定的改进和创新,设计一个远程通信系统,他由3部分构成:远端PC、本地端PC和单片机系统。
通过VB 可视化编程,远端PC利用局域网向本地端PC发出命令,本地端PC接到命令后,自动与单片机通过打印机接口以EPP1.9协议进行通信(串行接口作为备用通信口),并将接到的单片机数据实时传送给远端PC,以实现高速远程情况下PC与单片机通信的要求。
1 系统结构与设计系统构成如图1所示,远端PC通过局域网和本地PC通信,在通信中使用Winsock控件和TCP/1P协议;本地端PC通过并行通信接口或串行通信接口与单片机通信,在并口通信中使用WINIO并口通信驱动程序、EPP协议和LPT打印机接口,在串口通信中使用MsComm控件、RS 232C协议和COM口。
在此结构中,本地PC端起到中继的作用,当本地端PC接收到从远端PC传送过来的命令,在选择通信方式后,与单片机通信,使单片机向远端PC传送数据。
2 远端PC与本地端PC通信设计TCP/IP是目前在网络通信中广泛采用的一组完整的网络协议,该协议的核心是TCP,IP和UDP协议。
TCP/IP网络环境下应用程序通过网络系统编程界面套接字(Socket)实现与内核的交互。
利用Socket通信编程接口编写程序,其目的是在TCP/IP所组建网络的不同机器之间利用客户/服务器模式建立通信连接,开发人员只要提供一些基本的连接信息,其余由操作系统内核完成。
WinSock(Windows Socket)是Windows操作系统下的通用的TCP/IP应用程序的网络编程接口,通过调用WinSock的接口函数来调用TCP/IP的各种功能。
在VB中如何使用Winsock 控件摘要:本文介绍如何利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换,并分别给出Winsock控件使用 UDP 协议和TCP协议进行远程计算机连接的应用实例关键词:VB、控件、协议1.引言1.1 Winsock 控件可能的用途创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。
创建一个服务器应用程序,作为多个用户的数据的汇入点。
创建“聊天”应用程序。
1.2 选择通讯协议的标准在使用 WinSock 控件时,首先需要考虑使用什么协议。
可以使用的协议包括TCP 和 UDP。
两种协议之间的重要区别在于它们的连接状态:(1、) TCP 协议控件是基于连接的协议,可以将它同电话系统相比。
在开始数据传输之前,用户必须先建立连接。
(2、) UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。
另外,单次传输的最大数据量取决于具体的网络。
到底选择哪一种协议通常是由需要创建的应用程序决定的。
下面的几个问题将有助于选择适宜的协议:在收发数据的时候,应用程序是否需要得到客户端或者服务器的确认信息?如果需要,使用 TCP 协议,在收发数据之前先建立明确的连接。
数据量是否特别大(例如图象与声音文件)?在连接建立之后,TCP 协议将维护连接并确保数据的完整性。
不过,这种连接需要更多的计算资源,因而是比较“昂贵”的。
数据发送是间歇的,还是在一个会话内?例如,如果应用程序在某个任务完成的时候需要通知某个计算机,UDP 协议是更适宜的。
UDP 协议适合发送少量的数据。
1.3 协议的设置在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”,然后选择 sckTCPProtocol 或者 sckUDPProtocol。
【摘要】在Visual Basic 6.0 环境下,利用Winsock控件实现与远程数据采集端连接和数据传输。
与传统数据传输方法进行比较,该方法简单且易于实现,并充分利用了网络资源。
介绍了Winsock控件,结合示例程序,说明了该方法实现流程。
最后通过实验,证实该方法进行远程数据传输的可靠性。
【关键词】数据传输;协议;VB6.0;Winsock控件
在远程数据采集和传输系统中,传统的方法有 2 种:一是采用RS-485进行远程控制;二是通过调制解调器进入电话线来实现远程控制,然而这2 种方法都有自己的缺点。
这样一来就限制了它们的应用范围。
本文介绍了在VB6.0中利用Winsock控件来实现服务器端与远程客户端建立连接并进行数据传输的方法。
一、基于Winsock控件的远程数据传输
(一) Winsock控件简介
Microsoft提供的Winsock控件,是ActiveX控件的一种。
在VB 中可以将其添加到工具箱中以便使用。
在程序运行时,Winsock控件是不可见的,但通过对其属性、方法、事件的设置及应用可轻松地实现计算机间的远程连接,该控件为用户提供了访问TCP和UDP网络及其方便的途径,不需要了解低级Winsock API调用实现的细节。
VB 的Winsock控件内部几乎封装了所有的Internet协议,以类的形式提
供了属性、方法、事件,使得程序得到了极大的简化。
Winsock控件的常用属性如表1。
(二)传输协议
在使用Winsock控件时,首先要考虑使用什么通信协议。
可供选择的协议有传输控制协议(TCP)和用户数据报协议(UDP),都是位于传输层的协议、使用端口号来识别应用程序,区别在于连接的状态。
TCP协议是一个基于连接的协议,在收发数据前必须建立连接,并且该连接可靠性强,使数据无差错地传输,适合有确认信息的、重要的、数据量大(如声音和图像)的文件。
UDP协议是不与对方建立连接而是直接就把数据报发送过去。
传输速度较快也较便宜,适用于少量数据传送、可靠性要求不高的文件传输。
本文中均选用TCP协议。
(三)远程数据传输系统软件设计
1、远程传输系统软件流程
软件在Visual Basic环境下开发,利用Winsock控件完成客户端与服务器端的相互通讯。
创建客户端程序时,必须知道服务器端的IP地址(RemoteHost 属性)和服务器“侦听”的端口(RemotePort 属性)然后调用Connect 方法请求与服务器连接。
创建服务器端程序时,必须设置一个收听端口(LocalPort属性)并调用Listen方法侦听端口,本论文中使用的IP地址为202.205.84.222,使用的端口号为2020。
当客户端请求连接时就会发生ConnectionRequest事件。
为了完成连接,可调用ConnectionRequest
事件内的Accept方法与客户端进行连接。
连接建立后,双方就可以相互收发数据。
通过调用SendData方法完成数据发送。
接收数据时会触发DataArrival事件,调用DataArrival事件内的GetData方法获取数据。
2、服务器端程序设计
(1)服务器端窗体加载事件
利用Private Sub Form_Load()加载,并且设置本地端口,打开侦听,获取并显示本地状态信息。
(2)与客户端的连接
客户端发出连接请求时,触发ConnectionRequest事件,并调用Accept方法完成连接。
如果本地有连接,则断开,因为不能同时接受两组数据。
(3)建立连接
利用socks.Accept requestID接收当前连接,并显示远程计算机名、客户端IP及远程端口名称等远程状态信息。
(4) 接收数据
当客户端发送的数据到达时,触发DataArrival事件,并调用GetData方法获取数据。
(5)确认信息
当客户端数据发送完毕,触发SendComplete事件,服务器端会将发送的内容回发作为接收到数据的确认信息。
1、客户端程序设计
(1)客户端窗体加载事件
利用Private Sub Form_Load()加载,并且指定欲建立连接的服务器IP及端口名称,并随时侦测连接是否成功。
(2)客户端向服务器端发送连接请求
利用Private Sub sockcl_Connect()进行侦测,一旦成功连接,便向服务器发送客户端数据。
(3)服务器接收客户端发送的数据
当客户端端发送的数据到达时,触发DataArrival事件,并调用GetData方法获取数据。
(4)确认信息
二、实验结果及分析
(一)实验环境描述
实验中的客户端是远程数据采集系统,利用单片机作为主控制芯片,利用各种传感器采集现场数据,通过A/D转换送到单片机中。
单片机通过串口与GPRS模块连接,实现与移动网的连接,再与Internet连接。
(二)实验结果及分析
实验只采用8路差分模拟输入的3路――AI 6、AI 7、AI 8,因为存在干扰,固前5路的数值还有一些误差。
显示的数值不表示实际温度、湿度值,需经过转换,转换后与实际测量值进行比较,证实该方法传输数据的可靠性。
程序和整个系统均有待改进。
三、结束语
Winsock是编制各种C/S程序的利器,不仅很好地解决了分散的温度、湿度远程数据采集系统,并能有效可靠地进行传输,还能开发聊天程序、抢答系统[9]等。
算法具有简单性,且易实现。
参考文献:
[1]叶纪听.基于VB编程实现网络文件数据传递的实现[J]. 电脑知识与技术,2014,22:5235-5239.
[2]陈萍,高腾,刘兆峰,高雪为,詹鹏飞.基于GPRS的热力管网监测软件设计[J].山东建筑大学学报,2011,04:403-406+410.
[3]曹淑华. VB编程实现微机的网络远程唤醒[J].现代电子技术,2010,14:61-63.
[4]陈立定,冯景辉,胥布工.远程环境在线监测系统的设计[J].同济大学学报(自然科学版),2010,11:1659-1663.。