TPowersock问题(50分)

  • 主题发起人 主题发起人 client
  • 开始时间 开始时间
C

client

Unregistered / Unconfirmed
GUEST, unregistred user!
在Client端使用控件TPowerSock,如何能激活Server的某一事件
让它执行一段代码.比如用powersock1.writeln('已经连接');
回传给Client,Client如何知道。似乎没有接收应答的Event

 
?不是有一个事件叫做"OnPacketRecvd"吗?
配合BytesRecvd, BytesTota 以及 CaptureFile, CaptureString,
CaptureStream, Read, Readln来获取数据
 
但是在Object inspector的Event中并无此项,
我怎么才能添加代码?还望多多指教。
总不会是加个Timer不时检查
 
Hai!

我检查了这个所谓的Powersock, 简直就是个垃圾!!!
尽管它的帮助文件中强调最好不要直接使用这个控件, 而应该
从这个控件中继承出子类. 但是我倒要问问, 为什么还把它放在
控件宝贵的控件工具栏里呢? 不管三七二十一, 用用看, :(.

1. Object Inspector 里面并没有帮助文件里提到的许多事件
和属性! 无所谓, 我可以手工创建事件响应过程, 然后在Form
Create的时候把事件响应过程赋给控件.

2. OnAccept事件还是没有定义. (PacketRecvd倒是有), 这样只好
改异步事件驱动为顺序等待:
Powersock1.Listen(TRUE);
Powersock1.Accept;
S :=Powersock1.Readln;
Powersock1.Writeln('I have received your msg:'+S);

同时定义了Powersock1PacketRecvd响应过程并赋给了Powersock1.PacketRecvd;
结果这些事件过程根本就没作用, 而且帮助中号称的
Listen(TRUE)会等待连接请求到达后才返回, 实际却是
立刻返回, 如此等等, 不一而足

最后这个程序还导致我的Delphi不能关闭, 只有用TaskManager
强行杀掉

 
我的天,pega为了试验这个东东损失惨重。
光这就值50分 *_^

不过说归说,还是用Delphi的Socket构件吧!
难道有什么特殊理由不用吗?
 
非常感谢pegasus和dwwang的耐心帮助,看来Powersock确实不怎么样
当初想用它主要是因为它同时支持file,stream,string,对于我这个初学者应当很方便,浪费了pegasus的宝贵时间,仅以此区区50分怕难以弥补一个老Pascal
程序员受伤的心。50分虽少,我还是要给您加上,略表寸心。

dwwang先生的一番话提醒了我,想一步登天真没那么容易,socket才是正根,
想走近路,可能就要多走弯路.

今后还得多请教二位。
 
接受答案了.
 

Similar threads

回复
0
查看
848
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部