Windows용 C++에서 전화 접속, 광대역 또는 무선 인터넷 연결을 어떻게 감지합니까?

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

  •  01-07-2019
  •  | 
  •  

문제

인터넷 연결 유형에 따라 일부 레지스트리 값을 설정해야 하는 설치 프로그램(Windows Installer 기반이 아닌 일반 C++ MFC 프로그램)이 있습니다.광대역, 전화 접속 및/또는 무선.현재 이 정보는 일련의 예 또는 아니요 질문을 통해 결정됩니다.문제는 설치 작업을 수행하는 사람이 컴퓨터를 소유하고 사용하는 사람과 동일하지 않기 때문에 이러한 질문에 대한 답이 무엇인지 항상 확신할 수 없다는 것입니다.이 정보를 프로그래밍 방식으로 확인할 수 있는 방법이 있나요?코드는 Windows XP 이상에서 C++(및 선택적으로 MFC)로 작성되었습니다.설치 프로그램을 실행하기 전에 프레임워크가 설치되었는지 확인할 필요가 없기 때문에 .NET 기반 솔루션은 옵션이 아닙니다.

명확히 하자면, 문제는 주로 무선 및 전화 접속 연결이 "항상 켜져" 있지 않다는 것입니다. 따라서 서버를 항상 사용할 수 있는 것은 아니기 때문에 제품이 다른 방식으로 작동해야 합니다.따라서 엄격하게 속도를 측정하는 솔루션은 도움이 되지 않습니다. 단, 제품이 연결되자마자 전화 접속 연결을 통해 MB의 정보를 전송하려고 시도하지 않도록 속도에 따른 설정이 있기는 합니다.

도움이 되었습니까?

해결책

InternetGetConnectedState API를 사용하여 인터넷 연결 상태를 검색합니다.

테스트해봤는데 잘 작동합니다.

도움이 될 수 있는 다음 문서를 찾았습니다.

http://www.pcausa.com/resources/InetActive.txt

다른 팁

[당신이 요청한 정보를 정확히 어떻게 얻을 수 있는지는 모르겠지만...] 당신이 성취하려고 하는 것을 (스스로) 바꿔 말할 수 있을까요?예를 들어, "사용자에게 광대역 또는 전화 접속이 있습니까?"라고 묻는 대신 "사용자의 인터넷 연결에 얼마나 많은 대역폭이 있습니까?"라고 질문한 다음 사용자 입력 없이(예: 대역폭 측정) 다시 표현된 질문에 답할 수 있습니다.

그런데.사용자에게 "광대역 또는 전화 접속"만 요청하면 몇 가지 문제가 발생할 수 있습니다.

  • 사용자가 예상하지 못한 연결 유형을 가지고 있다면 어떻게 될까요?
  • 사용자가 모른다면(PPPoE DSL 모뎀/라우터에 연결되는 이더넷 케이블만 있기 때문에) 어떻게 될까요?
  • 사용자가 일련의 연결(전화접속을 통한 VPN, 광대역을 사용하는 다른 네트워크)을 통해 연결되어 있다면 어떻게 될까요?

이러한 경우에는 "유형" 대신 "기능"을 묻는 것이 더 유용할 수 있습니다.

"인터넷 연결이 영구적인가요?"라는 질문에 대해:

  • 가장 좋은 방법은 앱을 충분히 강력하게 만드는 것입니다. 언제나 비영구적 연결에 대처하세요 :-) 다이얼업과 광대역에서도 동일하게 작동합니다...
  • 또는 사용자의 인터넷 연결이 이미 설정된 기간을 확인하고 시스템 가동 시간과 비교할 수 있습니까?컴퓨터가 실행되는 동안 연결이 온라인 상태였다면 아마도 영구적인 연결일 것입니다.

어쨌든 이러한 경험적 방법은 모호한 연결 유형의 경우 실패할 수 있습니다.

또한 많은 양의 데이터를 전송하지 않는 것에 대한 요점은 다음과 같습니다.사람들이 "광대역 + 낮은 트래픽 제한" 요금제를 사용하는 경우 대역폭이 허용되더라도 많은 데이터를 보내서는 안 됩니다. :-)

가장 좋은 방법은 기본 활성 네트워크 연결을 잡고 인터넷 연결(google.com 또는 유사한 핑)인지 확인한 다음 어떤 유형의 장치인지 물어보는 것입니다.이를 통해 사용자가 어떤 연결을 가지고 있는지 확인할 수 있어야 합니다.

나는 이것이 가능하다고 확신하지만, 어떻게 해야 할지 모르겠습니다.

빠른 연결 속도 테스트를 수행하면 될 것 같습니다.특정 크기의 파일을 다운로드하고 소요 시간을 측정하면 속도를 알 수 있습니다.나는 다른 사람의 말에 동의합니다. 어떤 유형의 연결이 있는지 묻지 마십시오. 더 중요한 것은 속도입니다.아마도 내년에는 100mbit 다이얼업이 출시될 것입니다. 이 놀라운 새 장치를 사용하는 모든 사람이 형편없는 저대역폭 버전의 앱을 받기를 원하십니까?

나는 올리버의 말에 동의합니다:연결 끊김에 대처할 수 있는 기능이 이미 있으므로 기본적으로 활성화해 보는 것은 어떨까요?

광대역 연결은 다음과 같은 이유로 엉망이 될 수 있습니다.멈추는 라우터 소프트웨어(나에게 자주 발생함) 또는 튀김이 되는 전원 어댑터...

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