2012-07-25 3 views
1

C 소켓 프로그래밍에서 sendto()를 사용하여 실제 전송 속도에 대해 두 가지 질문이 있습니다. UDP 데이터 그램을 보내는 속도를 측정하는 방법은 무엇입니까?

  1. 나는 조금 소켓 프로그래밍을했고, 나는 UDP 루프에 대한 각 sendto를 동작 사이에 간격 (일시 중지) 다시 다시 데이터 그램을 보내고있다. 경과 시간을 얻고 실제 전송 속도를 계산하려면 clock_gettime()을 사용하는 것이 합리적입니까? 실제로 전송 속도에 영향을 미치는 것은 CPU의 빈도입니까, 아니면 내가 사용하고있는 네트워크 인터페이스입니까? 내 이해는 두 사람 중 느린 사람이어야한다는 것입니다. 그리고 clock_gettime()을 사용하여,이 전송 속도에 대한 다소 좋은 평가를 얻을 수 있습니까?

  2. PC에서 라우터로 100Mbps 이더넷 네트워크 인터페이스를 통해 UDP 데이터 그램을 보내는 중이라고 가정 해보십시오. 라우터의 실제 도착률은 얼마입니까? 한 경우에 S가 100Mbps보다 큰 경우 도착 속도는 약 100Mbps가됩니다. 맞습니까? S가 100Mpbs보다 크다면 도착률은 S가되어야합니다. 맞습니까? 아니면 여전히 100Mbps 여야합니까? 나는 조금 혼란 스럽다.

내가이 일을 해요 이유는 포기하지 않고 (나가는 링크의 특정 대역폭 제한을 주어) 내가 라우터에 연속으로 보낼 수 UDP 데이터 그램의 최대 버스트 크기를 얻고 싶은 것입니다 모든 데이터 그램. 어떤 아이디어가 이것을 얻기 위해 몇 가지 테스트를하는 방법?

답변

0

속도와 드롭 패킷에 영향을주는 요소는 수 백만 가지입니다. 속도, 행 길이 등을 달리하는 C 프로그램을 작성하고 속도와 손실 된 패킷을 측정하고 결과를 CSV 파일과 같은 그래프로 출력 할 것을 권장합니다.

관련 문제