delphi 7的中 TIdTCPClient组件ReadLn超时不能用怎么解决?

时间:2021-12-01 00:31:35
delphi 7的中TCP 编程的 TIdTCPClient 组件 ReadLn 方法的超时参数无效怎么解决?
大家在delphi 7中 TCP 编程一般用什么控件比较好?推荐的时候能不能提供些使用介绍和源码?

6 个解决方案

#1


可以考虑ICS(Internet Component Suite)控件,这个控件是免费的
其中有个WSocket,挺好的,我正在用
好像也支持D7吧,有DEMO,自己去研究吧

#2


给你个SVN地址吧
http://svn.overbyte.be:8443/svn/ics/trunk
用户:ics
密码:ics

#3


给的地址可以访问,那怎么从哪个网站下载内容啊?

#4


我都这样用的,从来没问题,不过没有用reandln,用的是ReadString

tcpClt.Port := f_ini.ReadInteger('public','port',6000);
            tcpClt.Host := f_ini.ReadString('public','ip','127.0.0.1');
            PrintMsg(richNote, '    连接服务器:'+tcpClt.Host+' '+IntToStr(tcpClt.Port));

            //连接
            tcpClt.Connect(10000);
            tcpClt.ReadTimeout := 10000;

            //发送数据
            tcpClt.Write(buff);
            //接收返回数据
            buff := tcpClt.ReadString(2);
            buff := buff + tcpClt.ReadString(ord(buff[1])*256 + ord(buff[2]));
            buff := Byte2Hex(buff);

#5


up.....

#6


delphi 7自带的Indy是v9.0.10版本的,在v9.0.18版本中已经解决了TIdTCPClient 组件 ReadLn 方法的超时参数无效这个问题。
查看delphi 7中Indy版本的方法:打开delphi 7,在窗口随便放置一个Indy组件,然后再组件上点右键,第一个就是版本信息了。

Indy v9.0.18下载地址:http://www.indyproject.org/Sockets/Download/files/Indy9.en.aspx

升级Indy的方法:
1、卸载旧的版本,Component -> Install packages...在Design packages中找打Internet Direct(Indy)forD7..,选择,然后点击“Remove”卸载。
2、在delphi目录中的Source文件夹中有一个Indy文件夹,将内容全部删除,然后将下载的indy9.0.18_source文件夹内容全部复制进去。
3、安装新版本:File -> open 找到 ...\Borland\Delphi7\Source\indy\dclIndy70.dpk,编译然后安装即可。
4、然后将所有文件复制到delphi目录中的lib文件夹中,覆盖掉原来的文件。即可。
新的版本与旧版本图标有差别,全部是新的样子。

#1


可以考虑ICS(Internet Component Suite)控件,这个控件是免费的
其中有个WSocket,挺好的,我正在用
好像也支持D7吧,有DEMO,自己去研究吧

#2


给你个SVN地址吧
http://svn.overbyte.be:8443/svn/ics/trunk
用户:ics
密码:ics

#3


给的地址可以访问,那怎么从哪个网站下载内容啊?

#4


我都这样用的,从来没问题,不过没有用reandln,用的是ReadString

tcpClt.Port := f_ini.ReadInteger('public','port',6000);
            tcpClt.Host := f_ini.ReadString('public','ip','127.0.0.1');
            PrintMsg(richNote, '    连接服务器:'+tcpClt.Host+' '+IntToStr(tcpClt.Port));

            //连接
            tcpClt.Connect(10000);
            tcpClt.ReadTimeout := 10000;

            //发送数据
            tcpClt.Write(buff);
            //接收返回数据
            buff := tcpClt.ReadString(2);
            buff := buff + tcpClt.ReadString(ord(buff[1])*256 + ord(buff[2]));
            buff := Byte2Hex(buff);

#5


up.....

#6


delphi 7自带的Indy是v9.0.10版本的,在v9.0.18版本中已经解决了TIdTCPClient 组件 ReadLn 方法的超时参数无效这个问题。
查看delphi 7中Indy版本的方法:打开delphi 7,在窗口随便放置一个Indy组件,然后再组件上点右键,第一个就是版本信息了。

Indy v9.0.18下载地址:http://www.indyproject.org/Sockets/Download/files/Indy9.en.aspx

升级Indy的方法:
1、卸载旧的版本,Component -> Install packages...在Design packages中找打Internet Direct(Indy)forD7..,选择,然后点击“Remove”卸载。
2、在delphi目录中的Source文件夹中有一个Indy文件夹,将内容全部删除,然后将下载的indy9.0.18_source文件夹内容全部复制进去。
3、安装新版本:File -> open 找到 ...\Borland\Delphi7\Source\indy\dclIndy70.dpk,编译然后安装即可。
4、然后将所有文件复制到delphi目录中的lib文件夹中,覆盖掉原来的文件。即可。
新的版本与旧版本图标有差别,全部是新的样子。