2012-05-23 2 views
9

가능한 중복 :
Iphone detect 3g or wifi아이폰 OS 감지 연결 속도 또는 유형

현재 네트워크 속도 나 얻을 수있는 방법이 장치가 EDGE/3G가/GPRS에있는 경우? Reachability를 사용하여 WiFI를 WMAN과 구분할 수는 있지만 내 응용 프로그램에는 충분하지 않습니다.

+1

중복되지 않습니다! –

+0

@gunjotsingh 초기 질문에 대한 대답은 실제로 여기에 있습니다 : https://stackoverflow.com/a/34333204/751932 연결 속도에 대한 질문이 중복으로 표시되었지만 ... – Speakus

답변

11

정말로 알고 싶으면 테스트해야합니다.

대기 시간이 짧은 알려진 서버에 대한 연결을 설정하십시오. 별도의 스레드에서 시간 (시간 A)을 표시하고 패킷을 보냅니다 (하나의 패킷인지 확인하십시오). 그 스레드에서 기다려. 첫 번째 패킷의 시간을 표시하십시오 (시간 B). 완료 될 때까지 데이터를 읽으십시오. 마지막 패킷의 시간을 표시하십시오 (Time C). 서버 응답이 적어도 세 개의 패킷에 걸쳐 있는지 확인하십시오.

시간 B - 시간 A는 매우 대략적인 대기 시간입니다. 시간 C - 시간 B는 대역폭의 대략적인 추정치입니다.

가능하면 정확하기를 원하기 때문에 가능한 가장 낮은 수준의 네트워크 액세스를 사용하십시오 (저는 iPhone이라고 생각합니다.). 고정 길이의 무작위 데이터 블록을 요청 및 응답으로 사용하십시오. 요청에 대한 몇 바이트 만 있으면 충분하지만 응답을 잘 작성해야합니다. 서버가 작은 첫 번째 패킷을 보낸 다음 3 개 이상을 채울만큼 큰 패킷 시퀀스를 보내야합니다.

그 시점에서 테스트해야합니다. 테스트, 테스트, 테스트 및 테스트. 다양한 네트워크 유형을 테스트하고, 네트워크 트래픽 양을 달리하여 테스트하고, 네트워크 스위칭으로 테스트하고, 생각할 수있는 다른 것을 테스트하십시오.

+1

흥미로운 기술적 접근. WIFI 또는 3G와 관계없이 ... 이것은 사용 가능한 대역폭에 대한 대략적인 예상치를 제공해야합니다. 논리적으로 네트워크를 통해 크거나 작은 이미지를 가져올 수 있도록이 같은 솔루션을 찾고있었습니다. 더 작은 대역폭 시나리오의 경우 더 작은 것 – jcpennypincher