TIdTCPServer 设置Active:=FALSE;时错误,求解??? ( 积分: 100 )

  • 主题发起人 主题发起人 zyxip
  • 开始时间 开始时间
Z

zyxip

Unregistered / Unconfirmed
GUEST, unregistred user!
当有客户端连接后,服务器端就不能设置Active:=FALSE;了,否则就会出错.

请问有什么办法可以主动将所有客户端全部都断开.
我用循环
TIdPeerThread(FTCPServer .Threads .LockList .Items ).Terminate;
这样也不行??
 
当有客户端连接后,服务器端就不能设置Active:=FALSE;了,否则就会出错.

请问有什么办法可以主动将所有客户端全部都断开.
我用循环
TIdPeerThread(FTCPServer .Threads .LockList .Items ).Terminate;
这样也不行??
 
TServerSocket是做在自定义的一个类中运态创建的,在类的.Destroy 时 FServerSocket.Active :=FALSE;
FServerSocket.Free;
就报错,为什么? 也没有客户端连接上来.
 
有这么难吗??

看来只有自己用SOCKET API写一个才能知道所的错误的原因.
 
向所有的客户端发出断开请求,由客户端断开就没问题了
 
我也正被这个问题困扰中,楼上的这好像不是解决问题的最好办法把
 
都Destroy了,还设Active:=FALSE?FServerSocket.Active :=FALSE;本身应该没什么问题。
 
在indy10中是不会出错的。
如果你调用了以下语句
TIdPeerThread(FTCPServer.Threads.LockList.Items ).Terminate
建议你你再调用FTCPServer.Threads.UnLockList;

其原因在于使用FTCPServer.Threads.LockList会锁住整个Threads,那你调用循环根本
不能停止后续的线程。
 
后退
顶部