教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 系统编程教程 · PowerBuilder · PowerBuilder基础教程

在POWER BUILDER里面运用WINSOCK控件

学院最新推荐文章
教程推荐
『在POWER BUILDER里面运用WINSOCK控件』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-9-21 

在WINDOWS应用程序中,处理实时通讯最常用到的还是MICROSOFT公司提供的WINSOCK控件。笔者因为实际应用的需要,琢磨出了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  //将数据字符串显示在文本框中 

以上程序实际上体现了聊天器的底层工作原理,稍加修改扩充就可以做成一个很好的聊天软件。



作者:无 来源:无
】【关闭窗口
·上页:
·下页:
相关文章
     系统编程教程 - PowerBuilder基础教程
普通教程测试...
普通教程马上结~~~
普通教程发个蛋帖
普通教程PB9.0连接sqlserver数据库,配置
普通教程赚分,马上结...
普通教程赚分,速结
普通教程赚分帖~~~
普通教程rowscopy时怎么样把目标数据窗中
普通教程谁能告诉我问啥会错误?
普通教程让我沉吧~~~
普通教程0分帖子~~~
普通教程每日一蛋
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光