请问聊天程序多现成?????????????????????急

weizhonghua0866 2003-07-19 08:38:45
一般PB聊天程序用shareobject多现成,多端口聊天可以1:多



现在我用winsoecket.pbl动态连碥,使用异步就是多现成
现在我想用服务器aa.bind
aa.listen(5)
客户端, aa.wsconnect
模式,只能1:1
不能1:多

我用了异步处理的方式,但是没有效果,请问是不是有什么函数或者什么支持PB
异步处理使得有效果????????????????????
急/???????????????????????????????
...全文
14 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
klbt 2003-09-28
  • 打赏
  • 举报
回复
关注...
wuhh 2003-09-28
  • 打赏
  • 举报
回复
我有现成的
zxthello 2003-08-02
  • 打赏
  • 举报
回复
网上例子和教程应该很多!up
rogery 2003-08-02
  • 打赏
  • 举报
回复
xxxx
bomber2001 2003-07-31
  • 打赏
  • 举报
回复
xx
online 2003-07-31
  • 打赏
  • 举报
回复
gz
  • 打赏
  • 举报
回复
我一点这样我资料
我没有用过。
发上楼主可以看一下:
作为参考吧::
  多线程强调的是一个进程内部有多个流程在同时执行﹐同时执行的概念相当于PB分布式计算中的异步处理。也就是说﹐只要我们在一个程序内部实现了异步处理﹐就相当于实现了多线程。分析至此﹐下一步该怎幺做就不言而喻了﹕在一个应用程序内部实现分布式计算﹐使用服务器推送技朮﹐异步执行共享对象中的函数。

  下面就编写一个Demo﹐介绍在PB中如何利用分布式计算技朮来开发多线程应用程序﹐uo─thread1和uo─thread2是类用户对象uo─thread的两个实例﹐uo─thread的功能是给实例变量li─Count自加5秒﹐自加的同时向中间对象uo─argv1和uo─argv2发送ue─thread消息。两个中间对象的功能是把ue─thread消息转化为ue─thread1和ue─thread2后发给主窗口w─main。
  主窗口接收到ue─thread1消息后﹐显示uo─thread1中自加变量的值﹐接收到ue─thread2后﹐显示uo─thread2中自加变量的值。在单线程中﹐uo─thread1先执行﹐5秒钟后uo─thread2开始执行﹐因此﹐前5秒内主窗口只能收到ue─thread1消息﹐后5秒内只能收到ue─thread2消息。在多线程中﹐uo─thread1和uo─thread2同时执行﹐因此w─main可以不断地收到ue─thread1和ue─thread2消息。

  1﹒设计用户对象uo─thread

  新建一个类用户对象﹐命名为uo─thread﹐添加如下两个实例变量﹕

  NonVisualObject inv─arg

  Long li─Count //自加变量

  创建如下三个用户函数﹕

  □uf─start()﹐功能是﹕完成自加5秒并向中间对象发送ue─thread消息。脚本为﹕

  Time t0

  t0= Now() //获取当前时间

  Do While SecondsAfter(t0,Now())〈=5

  li─Count++//实例变量自加5秒

  inv─arg.TriggerEvent(′ue─thread′)

  //向中间对象发送ue─thread消息

  Loop

  □uf─getcount()﹐功能是﹕获取自加变量的瞬间值。其脚本为﹕

  Return li─Count //返回实例变量

  □uf─setparent(NonVisualObject nv─arg)﹐调用时﹐使用中间对象为参数。脚本为﹕

  inv─arg=nv─arg

  //用中间对象给实例变量赋值

  2﹒设计中间对象uo─argv1和uo─argv2

  新建一个类用户对象﹐命名为uo─argv1﹐添加如下实例变量﹕

  Window win─arg

  创建用户函数uf─setparent(Window w─argv)﹐调用时﹐用主窗口作为参数。其脚本为﹕

  win─arg=w─argv

  //用主窗口对象给实例变量赋值

  声明用户事件ue─thread﹐用于对uo─thread1发出的uo─thread消息进行响应﹐其脚本为﹕

  win─arg.TriggerEvent(〞ue─thread1〞)

  //向主窗口发送ue─thread1消息

  uo─argv2和uo─argv1完全一样﹐只需将uo─argv1中的ue─thread1改为uo─thread2即可。

  3﹒设计主窗口w─main
设的三个控件分别为﹕st─thread1﹑st─thread2﹑st─time﹐分别用于显示uo─thread1和uo─thread2中自加变量的当前瞬间值和系统时间。声明两个用户事件﹕ue─thread1和ue─thread2﹐分别用于对中间对象发送来的ue─thread1和ue─thread2消息进行响应。ue─thread1事件处理代码为﹕
  st─thread1.Text=String(uo─thread1.uf─getcount())

  ue─thread2事件的处理代码为﹕

  st─thread2.Text=String(uo─thread2.uf─getcount())

  w─main的Open事件代码为﹕

  uo─arg1 = Create uo─argv1

  //初始化中间对象的一个实例

  uo─arg2 = Create uo─argv2

  uo─arg1.uf─setParent(This) //给中间对象的实例变量赋值

  uo─arg2.uf─setParent(This)

  Timer(1) //激活定时器

  Timer事件处理代码为﹕

  st─time.Text=String(Now())//显示当前时间

  在“单线程”的Clicked事件中加入下列代码﹕

  SharedObjectUnRegister(〞object1〞)

  //注销先前注册过的共享对象object1

  SharedObjectUnRegister(〞object2〞)

  //注销先前注册过的共享对象object2

  If IsValid(uo─thread1) Then Destroy uo─thread1  //若uo─thread1已经存在﹐先删除

  If IsValid(uo─thread2) Then Destroy uo─thread2

  uo─thread1=Create uo─thread

  //初始化uo─thread1

  uo─thread2=Create uo─thread

  uo─thread1.uf─setparent(uo─argv1) //用中间对象给uo─thread1中的实例变量赋值

  uo─thread2.uf─setparent(uo─argv2)

  uo─thread1.Post uf─start() //执行uo─thread1中的uf─start()函数﹐完成后才执行下一句

  uo─thread2.Post uf─start()

  //上一条语句执行完成后才会执行

  在“多线程”的Clicked事件中加入下列代码﹕

  SharedObjectRegister(〞uo─thread〞,〞object1〞)

  //将uo─thread对象注册为object1

  SharedObjectRegister(〞uo─thread〞,〞object2〞)

  //将uo─thread对象注册为object2

  SharedObjectGet(〞object1〞,uo─thread1)

  //用uo─thread1引用共享对象object1

  SharedObjectGet(〞object2〞,uo─thread2)

  //用uo_thread2引用共享对象object2

  uo─thread1.uf─setparent(uo─argv1) //用中间对象给uo─thread1中的实例变量赋值

  uo─thread2.uf─setparent(uo─argv2)

  uo─thread1.Post uf─start() //利用服务器推送技朮﹐异步调用共享对象中的uf─start()

  uo─thread2.Post uf─start()//相当于激活线程
发帖
Web 应用

660

社区成员

PowerBuilder Web 应用
社区管理员
  • Web 应用社区
加入社区
帖子事件
创建了帖子
2003-07-19 08:38
社区公告
暂无公告