2011-12-28 2 views
6

IdTCPServer 또는 IdTCPClient를 사용하여 현재 대역폭을 얻는 방법은 무엇입니까?현재 대역폭 (다운로드) 속도를 얻는 방법은 무엇입니까?

클라이언트가 서버에서 얼마나 빨리 데이터를 다운로드하고 있는지 알고 싶습니다.

예컨대 : 다운로드 속도 다음 OnWorkBegin, OnWork-450 kbps의

+3

질문 제목에 태그 정보를 넣지 마십시오. 그것은 처음부터 태그를 사용하는 목적을 무효화하고 질문 주제를 더 길게 읽을 수있게합니다. 또한 버전 간 주요 차이점이있는 인디와 같은 것을 사용할 때 사용중인 구성 요소의 버전을 포함 시키면 도움이됩니다. 감사. –

답변

9

지정 처리기를, 연결의 TIdTCPConnection 개체의 OnWorkEnd 이벤트. OnWorkBegin 이벤트는 AWorkCountMax 매개 변수를 가지며 전송 될 총 예상 바이트 수를 알려줍니다 (사전에 알고있는 경우). OnWork 이벤트에는 OnWorkBegin 이벤트가 발생한 이후 실제로 전송 된 바이트 수에 대한 누적 합계를 제공하는 AWorkCount 매개 변수가 있습니다.

OnWork 이벤트가 발생 될 때마다, 두 이벤트 사이에 전송 된 바이트 수를 결정하기 위해 현재 AWorkCount 값에서 이전 AWorkCount 값을 차감 한 후 둘 사이에 경과 된 시간에 의해 그 값을 분할 이벤트. 이 최종 값으로 b/sec, kb/sec, mb/sec 등을 필요에 따라 계산할 수 있습니다.

는 데이터를 송신/수신하는 방법을 정확하게에 따라 수동으로 발사 시작 OnWork... 이벤트를 얻을 수 TIdTCPConnectionBeginWork()EndWork() 메소드를 호출 할 수 있습니다. Indy의 읽기/쓰기 메소드의 대부분은 Begin/EndWork()을 내부적으로 호출하지 않습니다.

관련 문제