indy的TCPClient控件接收信息的问题(50分)

  • 主题发起人 主题发起人 疾风之猫
  • 开始时间 开始时间

疾风之猫

Unregistered / Unconfirmed
GUEST, unregistred user!
装了indy,打开里面的chat例程,发现client的程序接受数据居然是通过一个timer控件,
每半秒钟读一次数据。难道indy的tcpclient控件就是以这样一种方法接收来自于tcpserver
的数据吗?我看过tcpclient的事件,根本没有类似于on read之类的事件。有什么办法不用
timer控件接受数据的方法吗?
 
TCPCLIENT?不会吧
它可以用READLN读,还可以用流。不用TIMER呀,你说的例子在哪里
 
我知道可以用readln来读,但关键是没有相应的事件,也就是当有信息从tcpserver端传来时
,没有相应的事件发生。所以就算是indy自带的DEMO也是通过timer控件来定时readln读变量,
如果你有好的例子,在这里贴出来,或是发email给我。我的Email:e8223@elong.com。
 
  我也看了(我是用ICS的,是专门为了回答你的问题才安装indy哟),这个例
子确实古怪,看来只有得出一个结论,indy不是个好东西,因为它的例子都写得这样。
 
不知有没有详细介绍一个indy控件的使用方法,虽然我下了indy的英文帮助文档,但是却没
有delphi的实例,如果不看在indy的多线程处理能力,我早下决心用ICS了,如果哪位兄弟
告诉我indy的具体使用方法,帮我解决这个问题,我50分奉送!
 
ICS也可以在多线程中用啊
 
请参考TIdTCPServer的TIdPeerThread
 
对你的问题我有同感,关注!
 
我认为Indy挺好的.例子说明不了什么问题.
看看它的源码吧


 
在indy的TCPClient中有这样一个属性 Intercept
而Indy也提供了这个控件IdConnectionIntercept
连接上即可
在IdConnectionIntercept中提供了 onReceive onSend
 
但是具体怎么用呢?
 
Indy用的是阻塞SOCKET,所以不会有OnRead等事件驱动方式,一般是在
一个线程里面用IdTCPClient,那个例子,不过是一中简便的测试而以
 
继续关注!
 
这样用呀:写一个线程。override 其execute过程。

在这个过程里读就好啦。。。。轻松搞定。。。。。。
 
同意小枫,
我这有个例子,,我发到你的邮箱.
我也有个问题大家也去看看吧.我用的是indy9
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1595651
 
我也要例子jnbutian@sohu.com
 
快乐的蚂蚁:
把例子帖出来吧,大家都想知道为什么?
gjinkui@163.com
 
用Indy就不得不用线程,开一个线程不停接收或者发送就是了,接收不到数据或者发送不成功没超时前是不会返回的,它的设计思想就是要这样
 
后退
顶部