To : jfyes
非常感谢你.
OnExecute在客户端异常断开(Socket 10054)的时候那我用这个方法(AThread.Connection.ReadFromStack(true,10,false))获得包大小造成异常,而且没有终止线程。
我现在TCPServerOnExecute事件是这样处理的。
AThread.FreeOnTerminate := true;
try
tmpBufferLen := AThread.Connection.ReadFromStack(true,10,false);
except on Ex : Exception do
begin
AThread.Connection.Disconnect;
AThread.Terminate;
AppendLog('TCPServerExecute ReadFromStack : ' + Ex.Message);
end;
end;
而且我服务端如果主动断开的话,我做一个标志,不让客户端来连接。
但即使这样有时候在停止监听(IdTCPServer1.Active := false)的时候,还是有异常。程序安全退出不了。我想是不是这样我在停止监听的时候还有线程没结束造成的还是其他原因呢,如果是这样那怎么判断所有线程(IdTCPServer1开启的)结束呢?
你有即时通讯ID吗?我们交流一下。我的:qq : 69786714,MSN:ansili@hotmail.com