在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 方法来着手发送信息。
PB应用技巧1、需要打印发票,但每页的行数是固定的,怎么办?第一步:增加一个计算列,此计算列必须放在Detail段,Expression中输入:ceiling(getrow()/20) <--这里20还可以用全局函数取代,这样可以允许用户任意设置每页打印多少行。
第二步:定义分组,选择菜单Rows->Create Group...按计算列字段分组,并一定将check box-->New Page On Group Break选中。
第三步:将此计算列设为不可视。
另外,如果需要最后一页不足补空行。
也很简单,如下:long ll_pagerow = 6 //每页打印行数long ll_count, ll_rowll_count = dw_report.retrieve(...) //取得现有报表的总行数ll_count = ll_pagerow - mod(ll_count, ll_pagerow)If ll_count < ll_pagerow Thenfor ll_row = 1 to ll_countdw_print.insertrow(0) //补足空行nextend If2、我想在表格型的Datawindow上放标题,但总是不成功?在国内企业的报表表现形式通常以表格居多,PowerBuilder提供了表格风格的DataWindow,但打印表头需要稍稍下一点功夫。
第一步:先放一个Text(文本框)对象到DataWindow的表头上,在此Text上点击鼠标右键选择Properties->Postion->layer,将layer改为Foreground,这样你就可以改变Text的位置和宽度,然后将此Text的内容改为正确的报表标题即可,注意还需要将此Text的背景改为非透明色,否则会看到表线。
第二步:按第一步做完以后,当用户拖动Column改变宽度时,Text框是不会自动变化大小,可以有两种方法处理此问题。
在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。
WinSock控件的使用二,WinSock控件的使用1.WinSock控件的主要属性a.Protocol属性通过P rotoc ol属性可以设置WinSock控件连接远程计算机使用的协议。
可选的协议是TCP和UDP对应的V B的常量分别是sckTCPProtocol和sckUDPProtoc ol,Wins oc k控件默认协议是TCP。
注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。
b.SocketHandle属性Soc ketHandle返回当前s ocket连接的句柄,这是只读属性。
c.RemoteHostIP属性RemoteH ostIP属性返回远程计算机的I P地址。
在客户端,当使用了控件的C onnect方法后,远程计算机的I P地址就赋给了RemoteH ostIP属性,而在服务器端,当C onnec tReques t事件后,远程计算机(客户端)的I P地址就赋给了这个属性。
如果使用的是U DP协议那么当DataArrival事件后,发送U DP报文的计算机的IP才赋给了这个属性。
d.ByteReceived属性返回当前接收缓冲区中的字节数e.State属性返回WinSoc k控件当前的状态常数值描述s ckC los ed 0缺省值,关闭。
Sc kOpen 1打开。
Sc kListening 2侦听s ckC onnec tionPending 3连接挂起s ckRes olvingH ost 4识别主机。
s ckHos tResolved 5已识别主机s ckC onnec ting 6正在连接。
s ckC onnec ted 7已连接。
s ckC los ing 8同级人员正在关闭连接。
s ckE rror 9错误2.WinSock主要方法a.Bind方法用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序不能再使用这个端口。
b.Listen方法Lis ten方法只在使用TCP协议时有用。
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的使用♣frmclient窗体的设计内容窗体的配置内容如图3-2♣程序的代码private sub form_load()…指定远程主机的ip地址。
如果是localhost,代表的ip地址为127.0.0.1,并且也代表本机。
Tcpclient.RemoteHost=”localhost”…设置本机连接端口的localport属性的内容…请注意!必须是整体值tcpclient.remoteport=2000…设置窗体的标题内容Me.Caption=”frmclient”Label1.caption=”传送的文字”Label2.caption=”接收的文字”Cmdconnect.caption=”与主机连接”End subPrivate sub cmdconnect_click()…调用tcpclient控件的connect方法,来初始化与主机的连接请求tcpclient.connectend subprivate sub txtsend_change()…当txtsend控件的内容发生变化时,立即调用tcpclient控件的senddata方法,将txtsend控件的内容传送给主机tcpclient.senddata txtsend.textend subprivate sub tcpclient_dataarrival(byval bytestotal as long)…说明即将接收的数据类型dim strdata as string…调用tcpclient控件的getdata方法,将接收的数据以vbstring数据类型存放strdata变量之中。
Tcpclient.getdata strdata,vbstring…将strdata变量的内容,存放在txtoutput控件之中。
Txtreceive.text=strdataEnd sub♣程序的执行结果3-1-1如何允许更多客户端同时连接当您的应用程序架构是属于主从式架构时,一般来说,客户端应该不止一个而已。
在PowerBuilder中利用WinSock控件制作简单的Web服
务器
胡迎新;贾玉锋
【期刊名称】《智能计算机与应用》
【年(卷),期】2005(000)001
【摘要】介绍在PowerBuilder中利用WinSock控件制作简单的Web服务器.【总页数】2页(P49-50)
【作者】胡迎新;贾玉锋
【作者单位】石家庄铁道学院计算机系,050043;石家庄铁道学院计算机系,050043【正文语种】中文
【中图分类】TP393
【相关文献】
1.在VB中利用Winsock控件实现局域网通信 [J], 王留洋
2.利用PowerBuilder中TabControl控件实现造船托盘信息浏览 [J], 张志强;吴海辉
3.利用VB6.0中的Winsock控件实现点对点 [J], 何明达
4.例谈VB中利用定时器控件制作简单动画方法 [J], 陈雪梅
5.在PowerBuilder中利用TreeView控件实现用户权限分配 [J], 刘妍;袁媛
因版权原因,仅展示原文概要,查看原文内容请购买。
---- 随着资源共享和实时通讯的需要,很多计算机应用程序早已甩开单兵作战的模式,转入联合行动。
---- 网络在计算机世界里,越来越发挥着举足轻重的作用。
在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 //将数据字符串显示在文本框中
---- 以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成一个很好的聊天软件。
文:达伟春
湖南省怀化市电信局计算机中心。