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;
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;
begin
Clear;
with Add do
begin
//Ip:='127.0.0.1';
Port:=1981;
end;
Active:=True;
end;
IdTCPServer1.Bindings.Clear;
Binding := IdTCPServer1.Bindings.Add;
Binding.Port := 5020;
Binding.IP := '0.0.0.0'; // ip这样写