J
jfyes
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.IdTCPServer1Disconnect(AThread: TIdPeerThread);
begin
//会检测不到吗?
Self.Caption := Format('IP: %s, Port: %d', [AThread.Connection.Socket.Binding.PeerIP, AThread.Connection.Socket.Binding.PeerPort])
end;///我的这样全部检测到了。
procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;
AException: Exception);
begin
//这里面检测异常断线
end;
应该检测得到客户端断开,可能是你的程序用错误吧。
//看看Indy这个过程处理异常断线 IdTCPServer.pas line: 792
on E: EIdSocketError do begin
Connection.Server.DoException(Self, E);
case E.LastError of
Id_WSAECONNABORTED // WSAECONNABORTED - Other side disconnected
, Id_WSAECONNRESET:
Connection.Disconnect;
Socket正常断开或非正常断开都会有通知的。
API里面可以用FD_CLOSE来判定断开,非正常断开会有
WSAECONNABORTED这样一标志到另一端。
你收标志做相应的处理就行了.
begin
//会检测不到吗?
Self.Caption := Format('IP: %s, Port: %d', [AThread.Connection.Socket.Binding.PeerIP, AThread.Connection.Socket.Binding.PeerPort])
end;///我的这样全部检测到了。
procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;
AException: Exception);
begin
//这里面检测异常断线
end;
应该检测得到客户端断开,可能是你的程序用错误吧。
//看看Indy这个过程处理异常断线 IdTCPServer.pas line: 792
on E: EIdSocketError do begin
Connection.Server.DoException(Self, E);
case E.LastError of
Id_WSAECONNABORTED // WSAECONNABORTED - Other side disconnected
, Id_WSAECONNRESET:
Connection.Disconnect;
Socket正常断开或非正常断开都会有通知的。
API里面可以用FD_CLOSE来判定断开,非正常断开会有
WSAECONNABORTED这样一标志到另一端。
你收标志做相应的处理就行了.