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
[74618] [질문] Ping Test 시 특정 Lan Card(IF) 지정하는 방법?
단단한돌 [heaven2] 3652 읽음    2017-10-16 12:18
환경: C++ Builder XE5

icmp protocol를 통해 Target Server에 Ping Test를 하려 합니다.
Local PC는 두 개의 LAN Card가 있고,
Ping Test 시 어떤 LAN Card에서 할 지 지정하고 싶습니다.

기존 소스는 아래와 같습니다.
//..
hIcmpFile = IcmpCreateFile();   // icmp client를 만든다. 
//...
dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),
           NULL, ReplyBuffer, ReplySize, 1000);
// do something.. 

IcmpCreateFile()를 사용하면 라우팅 테이블에 따라
우선순위가 높은 LAN Card(IF)로 Bind되어 통신 합니다.

원하는 것은 IcmpCreateFile() 시에 특정 LAN Card(IF)를 지정하거나,
아예 RAW Socket을 그대로 이용하여 Socket 생성, Bind(), Connect()하는 방식인데..

RAW Socket을 이용할 경우 ICMP Protcole을 모두 만족해줘야 하는 부담이 있어서..

종합하면,
ICMP를 통한 Ping Test를 하되, 특정 LAN Card(IF)를 지정할 수 있는 방법이 있을까요?

IndyIcmpClient도 살펴 보았는데, Class 상속관계를 좀 살펴보았는데..
불가능한 것으로 보입니다.

고수님들의 고견을 청합니다.
감사합니다.

* 첨부 설명 *
이렇게 하는 이유는 PC에서 서버로 데이터를 전송하는데,
서비스 가용성을 높이기 위해서 PC에 두 개의 네트워크(유선 LAN=>KT Line,
무선 LAN=>LTE Modem)을 설치하고, 유선 LAN 카드로 통신하다가 통신 장애가
발생하면 무선 LAN 카드로 전환하여 통신하려 합니다.

이를 위해 유선이든 무선이든 지속적으로 Ping 테스트를 하고, Ping Test 실패시
유선 => 무선으로 전환, 무선 => 유선으로 전환합니다. 유선 <=> 무선의 전환은
각 Lan Card의 할당된 Metric 값을 조정하여 합니다.

따라서, Ping 테스트 시 유선인 지 무선인 지 명시적으로 선택하여 Ping Test를
실시할 필요가 있습니다.

+ -

관련 글 리스트
74618 [질문] Ping Test 시 특정 Lan Card(IF) 지정하는 방법? 단단한돌 3652 2017/10/16
74619     Re:[질문] Ping Test 시 특정 Lan Card(IF) 지정하는 방법? 빌더(TWx) 4764 2017/10/16
74620         감사합니다. 단단한돌 3393 2017/10/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.