但是在服务端会产生Connection Closed Gracefully.的错误信息。
我通过调试发现,用TIdTCPClient的readln读取一行数据,触发了服务端的Execute(AThread: TIdPeerThread);事件。然后我就用AThread向客户端发送数据。当客户端用TIdTCPClient的Disconnect方法的时候,也会触发Execute事件,而这个时候调用AThread的方法就产生了Connection Closed Gracefully的错误。
我尝试了
  AThread.Connection.Socket.Connected
  AThread.Stopped
  AThread.Connection.Connected
方法判断客户端是否已经Disconnect,但都无法判断客户端是否Disconnect了。
请问各位大侠有没有办法处理客户端Disconnect。我没有在服务器端Disconnect。

解决方案 »

  1.   

    我用ClosedGracefully也是不行。
    我要的是在用户连接后出发了Execute事件,在客户端Disconnect后触发了Execute。我想服务端的AThread因该有个方法判断客户端是否disconnect了。
      

  2.   

    你的客户端执行了Disconnect后,无法再连接到那个客户端,服务器端无法主动去连接客户端吧每个客户端连接服务器时都会有一个线程AThread
      

  3.   

    是的,我知道是无法主动连接客户端。但是我要知道客户端断开了。AThread在客户端断开后,是无法再读取数据,一读取就报错误:Connection Closed Gracefully。所以我想AThread是不是有个状态标示了客户端已经断开了。
      

  4.   

    一个ThreadList,断开的就Free了,还要啥提示
      

  5.   

    这个脱离IDE以后就不会有这个消息了,在OnDisconnect消息中处理client中断
      

  6.   

    你的回答莫名其妙,你看懂了我写的问题么?很多人都向你这样,回答的莫名其妙。仔细想想,估计是个MVP类型的人,他们一目十行的看别人的问题,然后在一目十行的回答别人。很搞笑。
    如果回答的质量不高,干脆别回答。最烦的是没自知之明的人。