我用TIdTcpServer/TIdTcpClient模仿qq传输文件个功能期间出现了一个郁闷的问题:
在当多个文件正在传输的时候去从接收端中断文件传输没有问题,但是我从服务端中断文件传输就报错。错误提示显示了线程结束超时(Terminate Thread Timeout)。其模式参考了indy9中demo的TcpDemo程序。
我想问一下怎么才能够从服务端结束文件传输?我试了服务端发信息给接收端让他来disconnect不晓得那里出了问题还是不行。

解决方案 »

  1.   

    出现的问题是在:当我想从Tidtcpserver端结束文件传输的时候就发现结束不了。然后在我IdTcpServer.Active:=false就报Terminate Thread TimeOut错误。
      

  2.   

    我在客户端(就是文件接收端)结束现在没有问题。我传文件的方向是IdTcpServer-->IdTcpClient。客户端创建线程来接收。服务端利用IdTcpServer本身的多线程机制。
      

  3.   

    这个错误好像可以算indy的bug我不记得9.0.18版本是否修正了,处理方法你可以通知Client让对方执行断开这样就可以
    服务器端的话可以尝试自己先讲所有的连接线程Disconnect了,然后再IdTcpServer.Active:=false
    一般这样就可以了
      

  4.   

    结束一个连接上的传输,还要动用所有连接,这个好象有点...不过我没试过,我基本上不用Indy,对于Server端可以找到相关联的sockethandle,然后执行shutdown(sockethandle)/closesocket(sockethandle)
      

  5.   

    IdTcpServer.Active:=false
    就断开了所有连接啊
    停止发送也不该是这样操作啊