***关于indy的Tcpclient读取服务端发的信息的问题。***

failer 2003-11-05 01:25:20
indy9有一个chat的demo中,client端使用一个Timer来查询从server端发来的消息。但是client端会在连接后马上失去响应。将Timer禁止后不会失去响应,但是就收不到server端发来的消息了。这是为何?
...全文
131 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liugaqiong 2003-11-22
  • 打赏
  • 举报
回复
我也碰到这种情况了,不过我是IdTCPClient.ReadStream(Buf, -1, true);
就不动了,真不知道该怎么搞,指点一下吧!!!
ly_liuyang 2003-11-21
  • 打赏
  • 举报
回复
ReadFromStack可以知道是否有数据可以读的

http://lysoft.7u7.net
sh_work 2003-11-21
  • 打赏
  • 举报
回复
搞定了!哈哈
sh_work 2003-11-20
  • 打赏
  • 举报
回复
多线程我不熟悉,能不能基于indy chatdemo 把client修改一下,解决那个问题??

给出关键代码就可以了。只要调试通过马上给分!说话算话,300分!急用呀!!!

wacp0955 2003-11-20
  • 打赏
  • 举报
回复
刚研究stock没几天,对你说的demo我下载测试了一下,情况和你的一样,查了一下indy的文档资料,自己又瞎试了两把......
不想多说了(写的好烦),总之客户端的ReadLn()调用在无data时将被阻塞( >Atimeout的设定值时),你要开一个线程把ReadLn()放进去,再PostMessage到主线程中对
ReadLn()后的值进行处理,一切OK。
sh_work 2003-11-19
  • 打赏
  • 举报
回复
没有高手的嘛?真是的,失望呀!

那位能解决,分随你要!!!

坚决顶上去。
sh_work 2003-11-19
  • 打赏
  • 举报
回复
顶呀!!!!!
sh_work 2003-11-19
  • 打赏
  • 举报
回复
唉呀呀,我的这里也有这个问题。

测了一下,就是
Msg := IdTCPClient1.ReadLn('', 5);
这一行,的问题。好像是缓冲区没有数据了就停住了。但是程序没有死,你只要从服务器上把客户端断开后就好了。而且不响应时从服务器端发送的数据时可以收到的。

我的系统是xp 专业版。奇怪,和操作系统有关系嘛?

哪位高人给指点一下。我也给加分!!!
BlueTrees 2003-11-16
  • 打赏
  • 举报
回复
没看懂题目。我用Delphi7里面TCPClient和TCPServer,好像这两个玩意是indy里面来的,Delphi原来的socket组件面板上都看不见了。我用这两个玩意用得很顺利啊。不过我的客户段是阻塞方式的。如果多线程,通常,一个线程开一个连接。
cx_super 2003-11-16
  • 打赏
  • 举报
回复
不行,我客户端使用多线程,执行一段时间后就不执行了,不知道时什么原因。
xstarsky 2003-11-13
  • 打赏
  • 举报
回复
客户端用一个线程收server的信息!
seion 2003-11-06
  • 打赏
  • 举报
回复
请高手不吝赐教。
我也研究了二两年了
求求你!!
failer 2003-11-06
  • 打赏
  • 举报
回复
请高手不吝赐教。
aiirii 2003-11-06
  • 打赏
  • 举报
回复
up
rwdx 2003-11-05
  • 打赏
  • 举报
回复
up

1,593

社区成员

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

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