在POWERBUILDER中使用WINSOCK控件的方法
- 格式:docx
- 大小:16.94 KB
- 文档页数:3
在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⽅法连接。
利用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控件实现局域网通信是一种方便、快捷、高效的方法,可以实现不同电脑之间的数据交互和消息传递。
在实际开发中,我们可以根据具体需求和实际情况进行相应的调整和优化,提高系统的性能和稳定性。
在POWERBUILDER中使用WINSOCK控件的方法(一对一,UDP协议)2011-01-18 10:36(该程序是在pb10.5版本环境下编写)一、在窗口中添加WINSOCK控件:在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。
在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。
二、设置信息输入输出文本框:在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入要发送的字符串和接受对方发送的字符串。
三、设置通讯协议:WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。
1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑定remotehost 和remoteport属性,如果需要双向通讯,还要设置localport属性。
在甲方(本机地址为:192.168.0.34)窗口的Open事件中加入如下语句:winsock_a.object.protocol=1//winsock通讯协议设为UDP协议winsock_a.object.remotehost="192.168.0.29"//对方的ip地址winsock_a.object.remoteport=6000//对方的winsock通讯端口号winsock_a.object.localport=6001//本机的winsock通讯端口号winsock_a.object.bind//绑定通讯协议在乙方(本机地址为:192.168.0.29)窗口的Open事件中加入如下语句:winsock_b.object.protocol=1//winsock通讯协议设为UDP协议winsock_b.object.remotehost="192.168.0.34"//对方的ip地址winsock_b.object.remoteport=6001//对方的winsock通讯端口号winsock_b.object.localport=6000//本机的winsock通讯端口号winsock_b.object.bind//绑定通讯协议需要注意的是:在server和client的ole控件的OLE CONTROL PROPERTIES需要填写项目,不能空(已经作出测试)如图:server:client无论采用哪种协议,都要在窗口的Close事件中加入如下语句:if winsock_a/*或winsock_b*/.object.state <>0 thenwinsock_a.object.close()end if否则可能第二次使用时发生异常问题开始通讯在按钮cb_1(caption属性设为‘发送’)的click事件中加入如下语句:winsock_a.object.senddata(sle_1.text)在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句://接受到对方数据后string datastr1winsock_a/*或winsock_b*/.object.getdata(ref datastr1)sle_2.text=datastr1 //将数据字符串显示在文本框中到此,编译一下,然后在两部电脑分别放server和client(同一局域网内),就可以进行简单的运行了。
在PB中使用WINSOCK控件[2]winsock_a object protocol=//winsock通讯协议设为TCP协议winsock_a object localport=//本机的winsock通讯端口号winsock_a listen()//启动监听在甲方winsock_a控件的Connectionrequest事件中加入如下语句//接受到对方的连接请求后if winsock_a object state< > thenwinsock_a close()end ifwinsock_a accept(requestID)//建立直接连接//requestID是Connectionrequest事件自己的参数在乙方(作为客户端)窗口的Open事件中加入如下语句winsock_b object protocol=//winsock通讯协议设为TCP协议winsock_b object remotehost=//对方的ip地址winsock_b object remoteport=//对方的winsock通讯端口号winsock_b connect() //发出连接请求无论采用哪种协议都要在窗口的Close事件中加入如下语句if winsock_a/*或winsock_b*/ object state< > thenwinsock_a close()end if否则可能第二次使用时发生异常问题三开始通讯在按钮cb_ (caption属性设为发送)的click事件中加入如下语句winsock_a/*或winsock_b*/ object send (sle_ text)在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句//接受到对方数据后string datastrwinsock_a/*或winsock_b*/ object getdata (def datastr )sle_ text=datastr //将数据字符串显示在文本框中以上程序实际上体现了聊天器的底层工作原理稍加修改扩充就可以做成一个很好的聊天软件编辑推荐ASP NET开发培训视频教程Microsoft NET框架程序设计视频教程lishixinzhi/Article/program/PB/201311/24622。
PB控件使用介绍一、PB中使用Microsoft Web Browser控件步骤:在pb的某窗口中加入OLE对象,选择Insert control(插入控件),然后选中"Microsoft WEB 浏览器",(随系统而定的版本),就可以在这个窗口直接使用IE浏览器控件了。
常用函数:(对这个ole控件取名叫ole_web)ole_web.object.navigate(string ls_url) file://浏览某url,譬如:ole_web.object.navigate('') 就是浏览 页面,当然支持本地文件,也支持本地图片文件的浏览,如jpeg,jpg,gif,png等等,如果是不支持的文件,则直接弹出选择打开文件对话框,和ie一模一样。
ole_web.object.goback() file://回退(如果没有内容可退,则会弹出错误,可以屏蔽该错误)ole_web.object.goforward() file://前进,同上常用事件:documentcomplete : url请求的页面完成;downloadcomplete:url中请求的下载完成;常用属性:ole_web.object.width :pixel高度,需要转换为pbunit高度才可以调整ole_web.object.height:同上ole_web.object.offline:离线方式,true,false两者之一你甚至可以用pb写出一个和ie类似的界面用来进行浏览网页或图片。
二、在程序中打印在程序中如何提供打印功能呢?这里有三种调用打印函数的格式可供选择。
1. 对数据窗口控制或者数据窗口可以使用这种打印格式。
DATAWINDOWNAME.Print(cancel_window)这里cancel_window 是一个布尔值,它指出是否要显示一个用户可以用来中止打印动作的窗口。
PowerSocket程序设计初学者指南PowerBuilder是一个最重要的客户-服务器应用开发工具。
当Internet已经成为共同开发的重要部分,PowerBuilder编写 TCP/IP应用的能力也有所增强。
在PC 平台上,有个叫WinSock的DLL提供TCP/IP功能。
PowerBuilder有能力访问DLL中的函数。
因而,调用WinSock.DLL应当不成问题。
但这只是片面的。
WinSock.DLL 中大多数函数可以通过声明局部外部函数在PowerBuilder应用中调用。
但对这个方法有重要限制。
在WinSock.DLL中的某些函数与PowerBuilder中的保留字相冲突。
这可以通过在PowerBuilder中声明时给你的函数命别名的方法解决。
另外还有一个问题。
WinSock.DLL中某些函数引用了指针的指针,PowerBuilder不能处置这类型参数传递。
因而,创建了一个叫PowerSocket的DLL,以处理名字/保留字冲突,及处理指针的指针问题。
的科学家们发现PowerSocket库很有用,并创建了PowerBuilder用户对象使在应用中集成PowerSocket更加简单了。
这些用户对象使得TCP/IP程序设计更加简单。
不过仍然需要了解一些基本知识,以知道如何构造TCP/IP网络应用。
我们希望本初学指南能在你通向用PowerBuilder与PowerSocket成功构造Internet/Intranet应用的成功之路上给你帮助。
SocketsTCP/IP程序设计也被称为socket程序设计。
编写TCP/IP应用的整体思想是计算机能在网络上相互通信。
这个通信策略使用Soket(插座)的思想。
当你要将设备连接到电源时,你把设备插入socket(插座)。
当两个计算机程序想要通讯时,它们也创建socket插座与另一个连接。
通过socket建立连接不是同时的。
首先,一台计算机建立监听socket。
在POWERBUILDER中使用WINSOCK控件的方法随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动。
网络在计算机世界里,越来越发挥着举足轻重的作用。
在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。
许多资料都细述了WINSOCK在VB中的使用方法,就连WINDOWS本身提供的hlp文件也是针对VB而写的。
笔者因为实际应用的需要,琢磨出了WINSOCK 控件在PB中的应用方法。
好东西不敢独自享用,拿出来与大家共享。
下面以一个简单程序为例,说明WINSOCK控件在PB中的使用:一、在窗口中添加WINSOCK控件:在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。
在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。
二、设置信息输入输出文本框:在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入要发送的字符串和接受对方发送的字符串。
三、设置通讯协议:WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。
1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑定remotehost和remoteport 属性,如果需要双向通讯,还要设置localport属性。
在甲方(本机地址为:134.1.1.1)窗口的Open事件中加入如下语句:winsock_a.object.protocol=1//winsock通讯协议设为UDP协议winsock_a.object.remotehost="134.1.1.2"//对方的ip地址winsock_a.object.remoteport=6000//对方的winsock通讯端口号winsock_a.object.localport=6001//本机的winsock通讯端口号winsock_a.object.bind//绑定通讯协议在乙方(本机地址为:134.1.1.2)窗口的Open事件中加入如下语句:winsock_b.object.protocol=1//winsock通讯协议设为UDP协议winsock_b.object.remotehost="134.1.1.1"//对方的ip地址winsock_b.object.remoteport=6001//对方的winsock通讯端口号winsock_b.object.localport=6000//本机的winsock通讯端口号winsock_b.object.bin//绑定通讯协议2.TCP协议设置:TCP协议在通讯前需要进行连接。
VB Winsock控件的使用与介绍VB Winsock控件的使用与介绍本文由ieclarry贡献第一节:第一节:Winsock 控件的介绍Winsock 控件的作用简单说就是可以用于两台或多台机器间通信,这里不多说这个控件的作用了,因为在以后的介绍中我们会了解到这个控件的强大功能的,如可以用来做聊天软件等…… 废话不多说,来看看他有些什么重要的属性、方法和事件吧!在VB6.0 中的工具箱里默认情况下是没有这个控件的,添加方法如下:在工具箱上右击,选择[部件],然后在部件对话框中选择"Microsoft Winsock Control 6.0",后确定即可。
如果没有这个复选框的话,请点击[浏览]按钮后在打开的[添加ActiveX 控件]对话框选择MSWINSCK.ocx 后选择打开,再点确定即可。
Winsock 控件在工具箱中图标为。
Winsck 的主要属性:的主要属性:属性名BytesReceived LocalHostName LocalIP LocalPort Protocol说明返回接收的数据,可以用GetData 方法来获取它返回本机名返回本机IP 返回或设置本机所用的端口,如果为0 则为随机产生返回通信所用的协议RemoteHostName 返回通信对方的计算机名RemoteHostIP State 返回通信对方的IP 返回Winscok 的当前状态,取值如下sckClosed(常量为0):关闭状态sckOpen(常量为1):打开状态sckListening(常量为2):侦听状态sckConnectionPending(常量为3):连接状态sckResolvingHost(常量为4):解析主机中sckHostResolved(常量为5):已解析主机sckConnecting(常量为6):正在连接sckConnected(常量为7):已经连接sckClosing (常量为8):客户端正在关闭sckError(常量为9):连接发生错误Winsock 的主要方法:的主要方法:方法名listen作用使服务器程序处于侦听状态,等待客户端的连接请求用于客户端向远程发送一个连接请求,语法:Winsock.connect connect [IP,Port] 用于服务器接收一个远程客户端的连接请求,语法:Winsock.Accept requestID 用于向远程发送数据,语法:Winsock.sendData 数据用于接收远程发送来的数据,语法:Winsock.getData 变量关闭通信AcceptsendData getData CloseWinsock 的主要事件:的主要事件:事件名Connect说明当服务器接收客户端请求时,服务端发生的事件有数据到达时发生的事件,可以在这个事件中来getData 发送来的数据客户端用Connect 方法时服务器发生的事件,可以在这个事件中来Accept 一个连接请求发送数据中发生的事件,可以在这个事件中来标示当前已经发DataArrivalConnectionRequestSendProgress送多少数据发送数据完成发生的事件通信发生错误时发生的事件关闭通信时发生的事件SendComplete Error Close这节我们详细介绍了Winsock 控件的属性、方法和事件等,只要拥有这些,我们就可以编很多功能强大的软件了。
VBWinsock的属性和方法Winsock的方法属性Winsock 控件对用户来说是不可见的,它提供了访问TCP 和UDP 网络服务的方便途径。
Microsoft Access、Visual Basic、Visual C++ 或 Visual FoxPro 的开发人员都可使用它。
为编写客户或服务器应用程序,不必了解TCP 的细节或调用低级的 Winsock APIs。
通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。
一、TCP 基础数据传输协议允许创建和维护与远程计算机的连接。
连接两台计算机就可彼此进行数据传输。
如果创建客户应用程序,就必须知道服务器计算机名或者IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用Connect 方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用Listen 方法。
当客户计算机需要连接时就会发生ConnectionRequest 事件。
为了完成连接,可调用ConnectionRequest 事件内的 Accept 方法。
建立连接后,任何一方计算机都可以收发数据。
为了发送数据,可调用SendData 方法。
当接收数据时会发生 DataArrival 事件。
调用 DataArrival 事件内的 GetData 方法就可获取数据。
二、UDP 基础用户数据文报协议 (UDP) 是一个无连接协议。
跟 TCP 的操作不同,计算机并不建立连接。
另外 UDP 应用程序可以是客户机,也可以是服务器。
为了传输数据,首先要设置客户计算机的 LocalPort 属性。
然后,服务器计算机只需将RemoteHost 设置为客户计算机的Internet 地址,并将 RemotePort 属性设置为跟客户计算机的 LocalPort 属性相同的端口,并调用 SendData 方法来着手发送信息。
---- 随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动。
---- 网络在计算机世界里,越来越发挥着举足轻重的作用。
在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。
许多资料都细述了WINSOCK在VB中的使用方法,就连WINDOWS本身提供的hlp文件也是针对VB而写的。
笔者因为实际应用的需要,琢磨出了WINSOCK控件在PB中的应用方法。
好东西不敢独自享用,拿出来与大家共享。
---- 下面以一个简单程序为例,说明WINSOCK控件在PB中的使用:
---- 一、在窗口中添加WINSOCK控件:
---- 在应用中新开一个窗口,在窗口画板中点击controls-->OLE菜单项,弹出Insert object窗口,单击Insert control标签,从列表框中双击选定Microsoft Winsock control,将winsock的图标贴在窗口上。
---- 在程序中该控件名称定为winsock_a(甲方)和winsock_b(乙方)。
---- 二、设置信息输入输出文本框:
---- 在窗口中增加一个按钮cb_1,两个单行文本框sle_1,sle_2,分别用于输入要发送的字符串和接受对方发送的字符串。
---- 三、设置通讯协议:
---- WINSOCK控件允许用户以UDP和TCP两种协议中任选一种进行通讯。
---- 1.UDP协议设置:UDP协议是一种无连接的通讯协议,在通讯之前,需要绑定remotehost 和remoteport属性,如果需要双向通讯,还要设置localport属性。
---- 在甲方(本机地址为:134.1.1.1)窗口的Open事件中加入如下语句:
winsock_a.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_a.object.remotehost="134.1.1.2"
//对方的ip地址
winsock_a.object.remoteport=6000
//对方的winsock通讯端口号
winsock_a.object.localport=6001
//本机的winsock通讯端口号
winsock_a.object.bind
//绑定通讯协议
---- 在乙方(本机地址为:134.1.1.2)窗口的Open事件中加入如下语句:
winsock_b.object.protocol=1
//winsock通讯协议设为UDP协议
winsock_b.object.remotehost="134.1.1.1"
//对方的ip地址
winsock_b.object.remoteport=6001
//对方的winsock通讯端口号
winsock_b.object.localport=6000
//本机的winsock通讯端口号
winsock_b.object.bin
//绑定通讯协议
---- 2.TCP协议设置:TCP协议在通讯前需要进行连接。
---- 在甲方(作为服务器端)窗口的Open事件中加入如下语句:
winsock_a.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_a.object.localport=6001
//本机的winsock通讯端口号
winsock_a.listen()
//启动监听
---- 在甲方winsock_a控件的Connectionrequest事件中加入如下语句:
//接受到对方的连接请求后
if winsock_a.object.state<>0 then
winsock_a.close()
end if
winsock_a.accept(requestID)
//建立直接连接
//requestID是Connectionrequest事件自己的参数
---- 在乙方(作为客户端)窗口的Open事件中加入如下语句:
winsock_b.object.protocol=0
//winsock通讯协议设为TCP协议
winsock_b.object.remotehost="134.1.1.2"
//对方的ip地址
winsock_b.object.remoteport=6000
//对方的winsock通讯端口号
winsock_b.connect() //发出连接请求
---- 3.无论采用哪种协议,都要在窗口的Close事件中加入如下语句:
if winsock_a/*或winsock_b*/.object.state<>0 then
winsock_a.close()
end if
---- 否则可能第二次使用时发生异常问题
---- 三、开始通讯
---- 在按钮cb_1(caption属性设为‘发送’)的click事件中加入如下语句:
winsock_a/*或winsock_b*/.object.send (sle_1.text)
---- 在winsock_a/*或winsock_b*/控件的dataarrival事件中加入如下语句:
//接受到对方数据后
string datastr1
winsock_a/*或winsock_b*/.object.getdata (def datastr1)
sle_2.text=datastr1 //将数据字符串显示在文本框中
---- 以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成一个很好的聊天软件。
文:达伟春
湖南省怀化市电信局计算机中心。