在POWERBUILDER中使用WINSOCK控件的方法

合集下载

在VBA中调用winsock控件

在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⽅法连接。

利用Winsock控件实现局域网通信

利用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控件的使用与介绍

VBWinsock控件的使用与介绍
End Sub
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

在POWERBUILDER中使用WINSOCK控件的方法

在POWERBUILDER中使用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]

在PB中使用WINSOCK控件[2]

在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。

PowerBuilder控件使用手册

PowerBuilder控件使用手册

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程序设计

PowerSocket程序设计

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。

使用WINSOCK控件的方法

使用WINSOCK控件的方法

在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协议在通讯前需要进行连接。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

---- 随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动。

---- 网络在计算机世界里,越来越发挥着举足轻重的作用。

在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 //将数据字符串显示在文本框中
---- 以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成一个很好的聊天软件。

文:达伟春
湖南省怀化市电信局计算机中心。

相关文档
最新文档