라벨이 순서인 게시물 표시

Windows 7 에서 어댑터 바인딩 순서 바꾸기

이미지
예전에 Windows 7 에서 인터넷 연결 우선 순위를 바꾸는 방법 을 소개한 적이 있다. 이 방법을 이용하면 어떤 인터페이스(어댑터)를 통해 인터넷에 연결할지를 결정할 수 있다. 하지만 이 방법은 어떤 인터페이스에 먼저 바인딩될지를 결정하지는 않는다. 무슨 소리인가 하니, 유선랜의 IP 는 192.168.10.100 이고, 무선랜의 IP 는 192.168.100.100 이라고 할 때, IP 를 유선랜의 IP 인 192.168.10.100 을 쓸 것인지, 아니면 무선랜의 IP 인 192.168.100.100 을 쓸지는 결정할 수 없다. Windows 7 은 보통 무선랜에 먼저 바인딩을 하기 때문에, 유선망에 있는 다른 컴퓨터와 통신을 하면, 다른 컴퓨터에는 이 컴퓨터의 IP 가 유선 IP 가 아니라 무선 IP 로 나올 수 있다. Windows 7 에서는 이런 문제를 해결하기 위해, 어댑터 바인딩 순서를 바꾸는 방법을 제공한다. 우선 다음처럼 [네트워크 연결] 창을 열자. [보기 기준] 이 [범주] 일 때 : [시작] - [제어판] - [네트워크 상태 및 작업 보기] - [어댑터 설정 변경] [보기 기준] 이 [범주] 가 아닐 때( [큰 아이콘] , [작은 아이콘] ) : [시작] - [제어판] -  [네트워크 및 공유 센터] - [어댑터 설정 변경] 이제 다음과 같은 [네트워크 연결] 창이 보이면, 메뉴에서 [고급] - [고급 설정] 을 고르자. 만약 위 그림처럼 [고급] 메뉴가 보이지 않는다면, [Alt] 키를 누르면 [고급] 메뉴가 보인다. 이제 다음과 같은 창이 보일 것이다. 위 설정대로라면 [무선 네트워크 연결 3] - [무선 네트워크 연결 2] - [무선 네트워크 연결] - [로컬 영역 연결] 순으로 바인딩을 시도한다. 바인딩될 프로토콜은 아래에 나와 있다. 만약 [로컬 영역 연결] 에 가장 먼저 바인딩하고자 한다면, [로컬 영역 연결] 을 선택하고, 오른쪽...

C++: 전역/정적 객체 우선 순위 문제

C++ 프로그래밍을 하다보면 전역/정적 객체가 필요할 때가 있다. 전역/정적 객체의 용도 중의 하나는 생성과 소멸이 자동으로 이루어지는 객체의 속성을 이용해서, 전역/정적 객체를 가지고  프로그램 전체의 초기화 작업과 마무리 작업을 수행하는 것이다. 하지만, 이러한  전역/정적 객체의 골칫거리가 하나 있는데, 바로 전역/정적 객체의 생성/소멸 순서이다. 어느 전역/정적 객체가 먼저 생성되고 나중에 생성될지 알 수 없기 때문에, 한 전역/정적 객체의 생성자에서 다른 전역/정적 객체를 참조하게 되면, 예상치 못한 오류를 만날 수 있다. 그래서 이를 해결하기 위해 여러가지 방법이 나왔다. 우선 컴파일러 차원에서 생성자들의 우선순위를 정할 수 있는 방법을 제공한다. #pragma 를 지시자를 이용해서 지원하는데, 이 역시도 우선 순위가 같은 객체 사이에서는 마찬가지 문제가 발생할 수 있기 때문에 근본적인 해결책은 될 수 없다. 그렇다면 근본적인 해결 방법은 없는 것일까 ? 다행히도, 그렇지는 않다. Effective C++ 항목 4 를 보면 해결 방법이 나온다. 전역/정적 객체 문제의 핵심은 객체가 이미 생성됐다는 것을 보증할 수 없다는 것이다. 하지만 조금만 틀어보면 이것이 불가능한 것은 아니다. 바로 함수 내부에 정적 객체를 선언하는 것이다. 함수 내부의 정적 객체들은 함수가 처음 호출될 때 반드시 한 번만 초기화되기 때문에, 함수를 이용해서 정적 객체에 대한 참조나 포인터를 되돌려 주면, 해당 정적 객체는 반드시 초기화되었다는 보증할 수 있다. 예를 들어, 클래스 A 와 클래스 B 가 각각 a.cpp 와 b.cpp 에 있다고 하자. Colored By Color Scripter ™ 1 2 3 4 5 6 7 8 9 // a.cpp class  A { public :     A();     ~A() ...