TIdTCPServer的异常多出现在收发数据的过程中,比如以下简单的接收过程:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
with AThread.Connection do
begin
Memo1.Lines.Add(ReadLn);
end;
end;
当客户端意外中断时就会发生异常,原因是ReadLn函数一直在等待一串字符,而连接的突然中断导致异常,使用下面的语句模型会在发生异常的时候关闭服务器线程:
try
with AThread.Connection do
begin
Memo1.Lines.Add(ReadLn);
end;
except
on E:Exception do AThread.Stop;//<----关闭服务器线程
end;