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

解决方案 »

  1.   

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

  2.   

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

  3.   

    我都这样用的,从来没问题,不过没有用reandln,用的是ReadStringtcpClt.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);
      

  4.   

    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文件夹中,覆盖掉原来的文件。即可。
    新的版本与旧版本图标有差别,全部是新的样子。