2010-06-23 4 views
0

Java 내에서 Java 응용 프로그램이 사용하는 바이트 수를 계측해야합니다 (즉, JVM에 특별한 액세스 권한이 없지만 처리 할 보안 관리자가없는 경우). 그러나 모든 바이트를 보내야합니다./프로토콜 헤더 등을 포함하여 수신 됨. 누구든지이 작업을 수행하는 방법에 대한 좋은 아이디어가 있습니까?Java SE 용 네트워크 사용량 "미터"를 만드는 방법에 대한 아이디어가 있습니까?

새로운 URLConnectionHandler를 만들고 IO 스트림에 미터링을 삽입하는 것이 분명합니다. 그러나 이것은 Java 응용 프로그램과주고받는 HTTP/HTTPS 메시지의 헤더 크기를 제공하지 않습니다.

답변

2

와이어의 정확한 바이트 수를 원한다면 OS의 도움이 필요하고 매우 구체적인 플랫폼 방식이 필요합니다.

네트워크 트래픽은 바부 시카 인형 세트입니다.

URLConnection은 헤더를 추가하고 TCP 스택은 각 패키지에 헤더를 추가하며 이더넷 스택은 다른 헤더를 추가합니다. 그런 다음 프로그램 뒤에서 발생하는 확인, 재전송 등이 있습니다. 그런 다음 DNS 요청 및 라우팅 패킷이 있습니다 ...

트래픽의 나머지 부분과 앱의 트래픽을 구분하는 특별한 규칙이 필요합니다.

올인 올스는 절망적입니다.

실용적인 목적으로 컴퓨터에 응용 프로그램을 설치하고 wireshark 또는 유사 장치를 사용하여 트래픽을 캡처하는 것이 좋습니다. 내부에서는 설명대로 페이로드를 측정 한 다음 외부 측정을 사용하여 오버 헤드를 측정합니다.

그런 다음 일반적인 사용에 대한 % 오버 헤드를 추정하고이를 앱의 페이로드 측정에 추가하십시오.

아무도 그 차이를 알 수 없을만큼 충분히 가깝습니다.

관련 문제