C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71909] [질문] 두 개의 네트워크 대역의 전환 문제..
땅주인 [heaven2] 3404 읽음    2014-10-23 18:03
RoutingTable.png 51.3KB 라우팅 테이블
환경: C++ Builder XE5

클라이언트 PC에서 Raw Data를 수집해서 수집 서버로 데이터를 전송합니다.
수집서로 전송할 때 네트워크 장애를 대비해서 두 개의 네트워크로 연결해 놓았습니다.
(클라이언트 PC는 랜카드가 2장입니다.)

A 네트워크 : KT망을 이용한 네트워크(KT Modem을 통한 네트워크)
B 네트워크 : LTE Modem을 이용한 네트워크(SK LTEModem을 통한 네트워크)

기본적으로 A 네트워크로 통신하다가, A 네트워크가 수집 서버에 도달하지 못하면
B 네트워크로 전환하여 통신하도록 하였습니다.

이렇게 A 네트워크 / B 네트워크로 전환하면서 통신하기 위해
클라이언트 PC에 있는 라우팅 정보를 인위적으로 조정합니다.

즉, A 네트워크와 B 네트워크의 Metric 값을 프로그램적으로 조정하여
사용하는 네트워크를 A / B 로 전환되게 만들었는데요.

첨부 파일처럼 192.168.10.x 대역의 Metric 45 , 192.168.0.x 대역의 Metric 30을
상호 전환하면서 통신합니다. (참고로 Metric 값이 낮을수록 통신 우선 순위가 높아 해당 Gateway로 통신합니다.)

DOS 창에서 수동으로 한다면 아래와 같습니다.

ROUTE CHANGE 0.0.0.0 MASK 0.0.0.0 192.168.10.1 METRIC 10 IF 18   //  네트워크 B의  Metric 값을 10
ROUTE CHANGE 0.0.0.0 MASK 0.0.0.0 192.168.0.1 METRIC 20 IF 13     //  네트워크 A의 Metric 값을 20

이것을 SetIpForwardEntry()등을 이용해서 프로그램 적으로 처리해서 Metric 값을 조정해서 A/B 네트워크의
우선 순위를 변경해서 처리합니다.

그런데,

이 방법이 썩~ 그렇게 좋아 보이지 않아서..신뢰성도 좀 떨어지구요..
Windows XP와 Windows7에서 좀 다르게 동작합니다.
좀더 확실한 방법을 찾고 있는데요..

혹, 이런 것을 경험하신 분이나, 몇 개의 네트워크 대역에서 왔다갔다하면서 작업해야 하는 상황에서
신뢰성을 보장할만한 코드가 어떤 것이 있을 지?

고수님들의 도움을..

감사합니다.


+ -

관련 글 리스트
71909 [질문] 두 개의 네트워크 대역의 전환 문제.. 땅주인 3404 2014/10/23
71911     Re:[질문] 두 개의 네트워크 대역의 전환 문제.. 박우성 3543 2014/10/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.