2008-09-18 4 views
1

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

명백히하기 위해 문제는 주로 무선 연결과 전화 접속이 "항상 켜져있는"것이 아니기 때문에 우리 서버가 항상 사용 가능한 것은 아니기 때문에 제품을 다른 방식으로 사용해야 할 필요가 있음을 알 수 있습니다. 따라서 엄격한 속도 측정 솔루션은 도움이되지 않습니다. 속도 의존적 ​​인 설정이 있어도 제품이 연결되는 즉시 전화 접속 연결을 통해 MB의 정보를 보내지 않으려 고합니다.

답변

2

사용 InternetGetConnectedState API는 인터넷 연결 상태를 검색하는 것을 poweradapter :

광대역 연결에 엉망 수 있습니다.

나는 그것을 테스트하고 정상적으로 작동합니다.

내가 도울 수있는이 문서를 발견

:

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

0

가장 좋은 방법은 기본 활성 네트워크 연결을 가져 와서 인터넷 연결 (google.com 또는 기타)을 확인한 다음 해당 장치 유형을 묻는 것입니다. 사용자가 어떤 연결을 가지고 있는지 확인할 수 있어야합니다.

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

+0

사람은 항상 내가 생각하지 않은 일을 마련하기 때문에 내가, 장치 및 수업의 목록을 유지하는 것을 피하기 위해 노력했다 그러나 나는 그것이 필요할 것으로 판명 될 것이라는 데 동의한다. – jeffm

3

[내가 원하는 정보를 정확히 얻는 방법을 모르겠지만 ...] 어쩌면 당신이 성취하려고하는 것을 (자신을 위해) 다시 말할 수 있습니까? 마찬가지로 "사용자가 광대역 또는 전화 접속을 가지고 있습니까?"라는 질문 대신 "사용자의 인터넷 연결이 얼마나 많은 대역폭을 가지고 있는지"물어보십시오. 그러면 대역폭을 측정하는 등의 사용자 입력 없이도 다시 질문에 답할 수 있습니다.

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

  • 예상하지 못한 연결 유형이 사용자에게 있다면?
  • 사용자가 알지 못하는 경우 (이더넷 케이블이 PPPoE DSL 모뎀/라우터로 연결되기 때문에) 무엇을 알 수 있습니까? 사용자가 연결의 시리즈를 통해 연결되어 어떤 경우
  • (광대역을 가지고 다른 네트워크에 전화 접속을 통해 VPN?)

대신 "유형"의 "기능"에 대한 요구는 그에서 더 유용 할 수 있습니다 사례.

+0

좋은 지적. 위의 설명을 참조하십시오. – jeffm

0

빠른 연결 속도 테스트를 수행해야한다고 생각합니다. 특정 크기의 파일을 다운로드하고 시간이 얼마나 걸리며 속도를 알 수 있습니다. 나는 다른 사람들과 동의한다. 그들이 어떤 유형의 연결을 가지고 있는지 물어 보지 말고, 더 중요한 것은 속도이다. 어쩌면 내년에는 100mbit 전화 접속이 가능할 것입니다 ...이 놀라운 새로운 장치를 사용하는 모든 사람들이 저속한 버전의 앱을 사용하기를 원하십니까? 질문에 대해서는

1

"영구 여부를 인터넷 연결입니까?"

  • 가장 좋은 방법은 항상가 아닌 영구적 인 연결에 대처 충분히 강력한 응용 프로그램을 만들기 위해 아마 될 것이라고 :-) 전화 접속 및 광대역으로 동일하게 작동합니다 ...
  • 또는 사용자의 인터넷 연결 기간을 이미 확인하고 시스템 가동 시간과 비교할 수 있습니다. 연결이 컴퓨터가 실행되는 동안 거의 온라인 상태 인 경우 이는 영구 연결 일 것입니다.

어쨌든 모호한 연결 유형의 경우 이러한 휴리스틱은 실패합니다. 많은 양의 데이터를 전송하지에 대한 지점에 관한 또한

: 사람들이 "광대역 + 낮은 트래픽 제한"관세가있는 경우 대역폭이 :-)

+0

연결 유형에 대응하는 프로그램의 디자인에 대해 취한 점. 그와 같은 이유가 있습니다.하지만 앱에서 공개적으로 할 수없는 일이 없이는 설명하기가 어렵습니다. – jeffm

0

I를 허용하거나 경우에도, 당신은 많은 데이터를 전송해서는 안 당신이 함축하는 것처럼 올리버와 동의 할 것입니다. 당신은 이미 연결 손실에 대처할 수있는 기능을 갖추고 있습니다. 정지 routersoftware (나에게 많이 발생 함), 또는 튀김, ...