Java (JPCAP)에서 트래픽 속도 (보낸 바이트)를 어떻게 제어 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/3206644

  •  13-09-2020
  •  | 
  •  

문제

클래스에서 네트워크 시뮬레이션 응용 프로그램을 만듭니다.나는 이미 전체 코드를 수행했지만, 전송 된 트래픽의 속도를 제어하는 데 어려움을 겪고 있습니다.

앱의 사용자는 생성하려는 원하는 속도를 입력 할 수 있습니다 (예 : 10 MIB / s).나는 정말로 진실 된 방법 으로이 통제력을하고 있습니다.특정 바이트 (예 : 8192 바이트)가있는 Java에서 UDP / TCP 패키지를 만들었습니다.이것을 알면서 나는 마지막으로 마지막으로 한 스레드를 만들었고 이미 그것이 제한 (초 또는 크기)의 한계 (초 또는 크기)에 도달했는지 계속 진행하고 있으며, 그것이 도달 할 때까지 계속 전송합니다.다음 알고리즘은 나의 진절머리 나는 아이디어를 설명합니다.

sendWithLimit (byte limit, JpcapSender sender, Packet pkg) {
     byte current = 0;
     long timeStamp = System.currentTimeMillis();

     while ((current < limit) && (System.currentTimeMillis() - timeStamp < 1000))
          sender.send(pkg);
          current += 8192;
     }
}
.

i 이 접근 방식이 상당히 가난하다고 생각하는 이 이것을 통제하는 더 좋은 방법이 있습니까 ???

도움이 되었습니까?

해결책

달성 가능한 대역폭 내에서 초당 8192 바이트의 패킷을 몇 개로 작동시킵니다.1000 / n 밀리 초 동안 각 수면을 한 후에 많은 패킷 (n)을 보내십시오.실제로 보내는 시간을 설명하기 위해 미세 조정해야하지만 일반적인 아이디어를 얻을 수 있습니다.

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