문제

Delphi 응용 프로그램에서 Tserversocket 구성 요소를 사용하고 있습니다. 클라이언트 연결을 제한하고 싶습니다. 불행히도 나는 그렇게하는 방법을 모른다. 구성 요소는 'maxconnections'와 같은 속성이나 이와 같은 속성을 제공하지 않습니다.

OngetThread 이벤트를 사용하여 새로운 서버 스레드 (tserverclientthread)를 만듭니다. 활성 연결의 수를 얻기 위해 '소켓 .ActiveConnections'속성을 사용했습니다.

불행히도 나는 그때 무엇을 해야할지 모르겠습니다. 연결 수가 한계 위에있을 때 OngetThread 절차 내부에서 스레드를 만들지 않으려 고했지만 정보가 변경되거나 수신되지 않더라도 서버에 연결하고 연결 상태를 유지할 수 있습니다. 새로운 클라이언트가 연결하거나 연결하도록 허용하지만 연결을 즉시 깨뜨릴 수 있도록하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

지난 몇 년 전 델파이를 사용했을 때, 나는 비슷한 상황이 있었고 내 경험이 당신에게 유용 할 수 있습니다. 나는 같은 문제에 직면했고 (이후에 "Indy"구성 요소로 전환하고 싶지 않았습니다. 큰) 응용 프로그램은 포트의 가치가 없었습니다. 내가 기억할 수있는 한, 당신은 onclientConnect 서버 소켓의 이벤트와 여기에 한도가 확인되었습니다.

.onClientConnect( Sender: TObject; aSocket: T... )
begin
    if( YourServerSocket.ActiveConnections > YourDefinedMaxConnections )
    begin
        // Drop the connection
        aSocket.Close;
    end;
end

나는 그 외에는 더 많은 것을 기억할 수 없지만 나는이 라인에서 무언가를했다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top