用IdTCPClient如何自动接收IdTCPServer发送的数据

sunkevin 2004-11-30 10:24:40
Server端会不定时的发送数据到客户端,要求客户端在数据发过来后及时地接收数据,而不是用Timer控件来控制。也就是说IdTCPClient有没有相应事件来触发?
我刚接触Indy,希望大家帮帮忙!
{我在Indy网站下载的demo也没找到我这种问题的范例}
...全文
1320 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
YaoKuiVcl 2005-01-12
  • 打赏
  • 举报
回复
littlefishli 2004-12-21
  • 打赏
  • 举报
回复
indy的例子里已经写得很清楚了啊,用一个线程来控制,完全可以实现.
sunkevin 2004-12-17
  • 打赏
  • 举报
回复
在delphi3下的TCP控件可以连接,并能发送和接收数据。可用delphi7的INDY控件能连接,但发送数据后Server端提示“无效数据”,可发送的字符串是和TCP控件发送的字符串是一样的。为什么?
crbb 2004-12-13
  • 打赏
  • 举报
回复
那别用IdTCPClient了! 阻塞的满足不了你的要求
weyoung 2004-12-13
  • 打赏
  • 举报
回复
IdTcpClient当然可以实现。
创建一个线程,用于读取或发送数据。
在线程中Execute中执行如下代码:
While ( Not Terminated ) do
begin
Try
Socket.ReadBuffer(..);
Synchronize(ProcessRequest); //在这里处理服务端送过来的请求
Finally
end;
end;
sunkevin 2004-12-12
  • 打赏
  • 举报
回复
但是Server端是别人开发的,而且肯定不是用DELPHI
crbb 2004-12-12
  • 打赏
  • 举报
回复
lynmison(菻梓)的方法好象是解决你的问题的唯一办法!阻塞就这特色!
天行归来 2004-12-06
  • 打赏
  • 举报
回复
一般来说,Client是用来往Server发送数据,不用于接收数据,如果硬要用Client去Readln,那可以用线程处理。
我的做法是用Server-Server组件完成通讯。
sunkevin 2004-11-30
  • 打赏
  • 举报
回复
用IdTCPClient.readln时,如果没有数据传过来,它是一直在读,这样程序就停在那里不能操作了。有没有办法判断当有数据传过来再去readln。
sunkevin 2004-11-30
  • 打赏
  • 举报
回复
举个例子说,每一次读到数据时,怎样自动将数据写入文本文件中
sunkevin 2004-11-30
  • 打赏
  • 举报
回复
可是当读到数据后怎样自动触发相应的事件?
getit911 2004-11-30
  • 打赏
  • 举报
回复
IdTCPClient是阻塞式的。比如调用IdTCPClient.readln时,indy会一直停在这读,直到读到数据或出现错误。

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧