win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기

요새는 머신에 여러개의 네트워크 장치가 붙어있다. 랜카드가 여러개인 경우도 있고, 그렇지 않더라도 VM등 가상 네트워크 디바이스가 여러개 존재하는 경우가 대부분이다. 따라서 어플리케이션이 접속을 받아야하는 경우에 어느 네트워크 장치의 IP에 bind해야할지 난감할때가 많다.

그래서 이럴때 사용할 코드를 작성했다.
win32의 경우는 dns주소와 gateway가 설정된 경우를 찾아서 인터넷에 접속한걸로 간주한다.
UWP의 경우 NetworkInformation::GetInternetConnectionProfile()로 인터넷에 연결된 네트워크 장치를 찾는다.
이 코드는 (당연히 완벽하지는) 않겠지만 최대한 인터넷에 접속된걸로 판단되는 IP를 찾아준다.
2년 이상 사용해온 코드니까 웬만한 경우에는 의도대로 작동할 것이다.

소스코드는 github에 올려놓았다.

https://github.com/megayuchi/winsock


win32 or UWP에서 인터넷에 연결된 적절한 IP가져오기”에 대한 답글 1개

  1. 안녕하세요 라즈베리파이2 UWP배포 관련하여 질문이 있어 남겨봅니다.

    개발한 프로그램을 배포 하고나서 자동실행 기본 APP로 설정하고 나면 그 이후 배포하려고 해도
    실행중인 파일이라 배포가 안되는데요.
    그 뒤로는 APP를 종료시켜도 기본 APP라서 계속 다시 켜지게 되네요.
    어쩔수 없이 기본 APP 설정을 라즈베리파이2 Default APP로 변경 후 배포하고 다시 기본 APP로 설정하고 있습니다.

    배포를 여러개에 해야 한다고 할때 일반 윈도우즈 응용 프로그램처럼

    \IP\c$\User\..\..\..\DevelopmentApp\(appname)\ 안에 exe 파일을 복사하려고 해도
    역시 실행중인 APP라 되지 않고 SD카드를 빼서 PC에 연결하고 파일을 변경하려고 해도
    주 파티션 자체가 해당 파티션이 아니라 파일이 보이지 않네요.

    혹시 자동실행 APP를 여러개 배포해야 할때 취해야 하는 방법을 알고 계시면 도움 부탁드립니다.

    좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중