Delphi에서 IdTcpServer 사용자 오프라인 검사 방법
1541 단어 Delphi
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
CheckForDisconnect();
end;
procedure TMainForm.CheckForDisconnect();
var
lst:TList;
I:Integer;
User:TUser;
begin
lst:=FUserList.LockList;
try
for I:=0 to lst.Count-1 do
// , OnExecute , OnDsiconnet
User.Context.Connection.CheckForGracefulDisconnect;
finally
FUserList.UnlockList;
end;
end;
여기서 FUserList는 로그인 사용자 엔티티 목록이며, 사용자 엔티티에는 IdTcpServer 사용자 스레드 정보가 들어 있습니다.2. 연결할 때 연결을 테스트하기 위해 WinSock2(인터넷에서 다운로드 가능)가 필요합니다. 코드는 다음과 같습니다.
uses WinSock2;
procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
type
TCP_KeepAlive = record
OnOff: Cardinal;
KeepAliveTime: Cardinal;
KeepAliveInterval: Cardinal
end;
var
Val: TCP_KeepAlive;
Ret: DWord;
begin
Val.OnOff:=1;
Val.KeepAliveTime:=xxx;
Val.KeepAliveInterval:=xxx;
WSAIoctl(AThread.Connection.Socket.Binding.Handle, IOC_IN or IOC_VENDOR or 4,
@Val, SizeOf(Val), nil, 0, @Ret, nil, nil)
end;
마찬가지로 사용자 연결이 실패했을 때 OnExecute 이벤트에서 읽기 이상을 던진 다음 OnDisconnect 이벤트를 발생시킵니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.