본문 바로가기
2_ 바삭바삭 프로그래밍/C and C++

C++ - 인터넷 연결확인 방법

by 준환이형님_ 2010. 12. 21.

[오프라인에서 식단표가 뻗는 현상]에 대한 예외처리를 찾던 중 좋은 포스팅이 있어 올려봅니다아


출처 : http://hanburn.tistory.com/28

 

인터넷 관련 프로그램을 많이 하는데이때 필요한 것 중에 하나가 현재 인터넷에 연결이 되었는지 확인하는 것입니다보통 인터넷 파일오픈등의 방법으로 확인을 하는데이것보다는 인터넷에 연결된 상태를 확인하는 API가 있으니 이것을 이용하면 됩니다InternetGetConnectedState, InternetGetConnectedStateEx  함수가 그것입다. 사용하는 법은 아래와 같습니다. 
필요한 헤더파일은 WinInet.h 파일이고, 라이브러리는 WinInet.lib 입니다. 

 


#include <WinInet.h>
#pragma comment (lib, "WinInet.lib")

        DWORD
 dwFlag;

        TCHAR szName[256];

        ::InternetGetConnectedStateEx(&dwFlagszName2560);

 

함수 리턴값이 TRUE이면 인터넷에 연결된 것이고, FALSE이면 연결이 안된 것입다그리고 dwFlag에 상태정보가 넘어오게 되는데 그 정보는 아래와 같습니다.

 

Value

Meaning

INTERNET_CONNECTION_CONFIGURED
0x40

Local system has a valid connection to the Internet, but it might or might not be currently connected.

INTERNET_CONNECTION_LAN 
0x02

Local system uses a local area network to connect to the Internet.

INTERNET_CONNECTION_MODEM
0x01

Local system uses a modem to connect to the Internet.

INTERNET_CONNECTION_MODEM_BUSY
0x08

No longer used.

INTERNET_CONNECTION_OFFLINE 
0x20

Local system is in offline mode.

INTERNET_CONNECTION_PROXY
0x04

Local system uses a proxy server to connect to the Internet.

INTERNET_RAS_INSTALLED
0x10

Local system has RAS installed.

 


dwFlag 값은 비트연산으로 확인 할 수 있는데, ( dwFlag & INTERNET_CONNECTION_LAN ) 이 참이면 랜으로 연결된 것입니다. 

그리고 세번째 인자에는 현재 연결된 이름이 나오게 된다랜으로 연결된 경우에는 “LAN연결” 이라는 문자열이 넘어온다마지막 인자는 0으로 고정이다그리고 간단한 버전으로 


         

InternetGetConnectedState(&dwFlag, 0);

 

이렇게 사용해도 됨.