현재 네트워크 속도 나 얻을 수있는 방법이 장치가 EDGE/3G가/GPRS에있는 경우? Reachability를 사용하여 WiFI를 WMAN과 구분할 수는 있지만 내 응용 프로그램에는 충분하지 않습니다.
답변
정말로 알고 싶으면 테스트해야합니다.
대기 시간이 짧은 알려진 서버에 대한 연결을 설정하십시오. 별도의 스레드에서 시간 (시간 A)을 표시하고 패킷을 보냅니다 (하나의 패킷인지 확인하십시오). 그 스레드에서 기다려. 첫 번째 패킷의 시간을 표시하십시오 (시간 B). 완료 될 때까지 데이터를 읽으십시오. 마지막 패킷의 시간을 표시하십시오 (Time C). 서버 응답이 적어도 세 개의 패킷에 걸쳐 있는지 확인하십시오.
시간 B - 시간 A는 매우 대략적인 대기 시간입니다. 시간 C - 시간 B는 대역폭의 대략적인 추정치입니다.
가능하면 정확하기를 원하기 때문에 가능한 가장 낮은 수준의 네트워크 액세스를 사용하십시오 (저는 iPhone이라고 생각합니다.). 고정 길이의 무작위 데이터 블록을 요청 및 응답으로 사용하십시오. 요청에 대한 몇 바이트 만 있으면 충분하지만 응답을 잘 작성해야합니다. 서버가 작은 첫 번째 패킷을 보낸 다음 3 개 이상을 채울만큼 큰 패킷 시퀀스를 보내야합니다.
그 시점에서 테스트해야합니다. 테스트, 테스트, 테스트 및 테스트. 다양한 네트워크 유형을 테스트하고, 네트워크 트래픽 양을 달리하여 테스트하고, 네트워크 스위칭으로 테스트하고, 생각할 수있는 다른 것을 테스트하십시오.
흥미로운 기술적 접근. WIFI 또는 3G와 관계없이 ... 이것은 사용 가능한 대역폭에 대한 대략적인 예상치를 제공해야합니다. 논리적으로 네트워크를 통해 크거나 작은 이미지를 가져올 수 있도록이 같은 솔루션을 찾고있었습니다. 더 작은 대역폭 시나리오의 경우 더 작은 것 – jcpennypincher
중복되지 않습니다! –
@gunjotsingh 초기 질문에 대한 대답은 실제로 여기에 있습니다 : https://stackoverflow.com/a/34333204/751932 연결 속도에 대한 질문이 중복으로 표시되었지만 ... – Speakus