2017-02-07 19 views
-1

우리는 현재 인터넷 대역폭을 캡처해야하는 Windows 데스크톱 응용 프로그램에서 작업하고 있습니다. ZIP 파일을 여러 번 순차적으로 다운로드하고 있지만 결과는 Speed Test과 일치하지 않습니다. ACTIVE 네트워크 카드에서받은 바이트를 캡처하고 있지만 순차적 다운로드는 예상 된 결과를 제공하지 않습니다. 여러 파일을 여러 번 병렬로 다운로드하려고했지만 실패했습니다.C# .Net 대역폭 계산 VS Speedtest.net 속도

다른 파일을 병렬로 다운로드 한 경우에만 성공했으며 Speed Test을 사용하여 동시에 테스트를 수행했습니다.

지금 여기 내 몇 가지 질문은 다음과 같습니다

  1. 는 TCP 홉 사이의 대역폭이 우리의 대역폭에 영향을합니까?
  2. TCP HOPS 간의 트래픽이 우리 대역폭에 영향을 줍니까?
  3. HTTP/TCP 다운로드 및 C# .NET을 사용하여 전체 대역폭을 효과적으로 소비하는 방법은 무엇입니까?
  4. ISP는 TCP 소켓 연결 당 대역폭을 조절합니까?
  5. ISP는 http://www.speedtest.net에 대역폭을 제공합니까? (가 항상 예상 보여 수 할 수 없습니다 결과 있지만, 다른 사이트 수 없습니다)

     for (int downloadCount = 0; downloadCount < iterations; downloadCount++) 
         { 
          try 
          { 
           string downloadUrl = GetUniqueDownloadUrl(); 
    
           bool isValidUrl = Uri.IsWellFormedUriString(downloadUrl, UriKind.Absolute); 
    
           if (true != isValidUrl) 
           { 
            return result; 
           } 
    
           // Download file and register total time to download file. 
           Stopwatch stopwatch = new Stopwatch(); 
           stopwatch.Start(); 
           byte[] fileContent = webclient.DownloadData(new Uri(downloadUrl, UriKind.Absolute)); 
           stopwatch.Stop(); 
           double downloadTime = stopwatch.ElapsedMilliseconds/1000; // Milliseconds to Seconds 
    
           // Convert bytes to Mbits. 
           fileSizeInMbits = fileContent.Length/125000; // bytes to Megabits 
           double speed = fileSizeInMbits/downloadTime; // speed in Mbps 
    
           // Store speeds for average calculation. 
           speeds.Add(speed); 
          } 
          catch (Exception e) 
          { 
           result.Error = e; 
           break; 
          } 
         } 
        }    
    
        // Calculate average bandwidth for total successful downloads. 
        double totalAvgSpeed = speeds.Average(); 
        result.FileSizeInMB = fileSizeInMbits/8; 
        result.Speed = Math.Round(totalAvgSpeed, 2, MidpointRounding.AwayFromZero); 
        return result; 
    } 
    
+0

다음은 몇 가지 질문입니다. 1) 방법과 속도 테스트의 차이점 2) 파일을 다운로드하고 속도를 계산하는 데 사용하는 코드는 어디에 있습니까? –

+0

@ PawełŁukasik 대역폭을 계산하는 코드 스 니펫을 추가했습니다. 생각을 공유하십시오. –

답변

0

그런 일이 "속도"는 기가비트 이더넷 1 컴퓨터가있는 경우에만 속도가 2 호스트 사이에있다가 인터넷으로 없다 그리고 기가비트 이더넷에도 서버가 있습니다. 단 하나의 노드가 포화 상태 일 때 속도가 떨어질 것입니다. speedtest.net을 사용할 때 가까이에 서버가 많이 있습니다 (isp에있는 것 포함). 매우 긍정적 인 추정치를 얻는다.

귀하의 isp가 스로틀 된 경우 속도가 똑같은 것을 볼 수 있습니다.

유일한 기억해야 할 것은 서버에서 파일을 다운로드하면 실제 서버에없는 개념 인 "인터넷 속도"가 아니라 서버의 TO/FROM 예상 속도를 제공한다는 것입니다 ~로 시작하십시오.