我现在在做一个用SOCKET传输文本的程序,用D6 TSERVERSOCKET和TCLIENTSOCKET两控件,数据是从数据库中读出一条记录各个字段的内容按一定的格式组成特定的文本,通过CLIENT端发到SERVER,在SERVER端进行分析,得到CLIENT端传过来的数据。如果数据库记录不多时,CLIENT端与SERVER端传数据还不会有问题,一但数据库中的记录很多的时候(比如1000条),CLIENT端与SERVER端就一直在发送数据直到,两端占用绝大部分的CPU,而且像死机一样,腛s整个程序界面就不能动了。这个问题困我好久了,各位兄弟姐妹有什么好的方法来传输这样的数据?解决我另加分。

解决方案 »

  1.   

    用线程吧
    看看http://www.cndelphi.com/bbs/dispbbs.asp?boardID=49&ID=285&skin=0的讨论
      

  2.   

    我只能提醒楼主,VCL 是线程不安全的。
      

  3.   

    用TServerSokcet/TClientSocket,如果不是非阻塞的,必须做成多线程模式。
      

  4.   

    如果传送文件的话,我建议你用非阻塞方式。
    首先把要传的文件信息,如大小,文件名先以string方式传过去,对方收到信息后,做准备并告诉传送方可以开始传文件。此时传送方先把文件读入一个buf中后用SendBuf进行传送。注意:每一次接收最多只可接收3800k左右的信息,所以在接收方根据前一次收到的文件信息,看是否已接收完毕。