다른 프로토콜 (UDT)을 지원하도록 iperf을 수정하려고합니다. 그럼 내가해야 할 일은 런타임에 연결할 라이브러리 선택
socket(...);
bind(...);
listen(...);
는 조건부입니다 iperf에서 이러한 호출이 UDT 코드를 사용할 수 있도록 소켓 대신 UDT 라이브러리와 링크 다음 UDT의 API는 표준 BSD 호출을 반영하도록 작성 TCP 스택에 대한 인터페이스 이 작업을 수행 할 수 있습니까? 난 항상 라이브러리를로드하고 UDT :: namespace를 사용하는 다른 조건부 경로를 가질 수 있지만, 1) TCP 경로에서 중복되는 부분이 많으며 2) 변경 사항이 많을 수도 있습니다. 제가 명확하지 않다면이 동적 링크를 달성하는 방법에 대한 제안을 부탁드립니다.
편집 : 아래에 언급 된 dlopen을() 제품군을 사용
, 나는 다음과 같은 프로그램 흐름 수 :
는 cmd를 라인 PARAMS 구문 분석 -> UDT가 요청하는 경우를로드 라이브러리 libudt -> 얻을 모든 UDT BSD 함수 (바인드, 수신 대기 등)에 핸들을 저장하십시오.
이 시점에서 모든 UDT 함수에 저장된 함수 포인터가 있습니다. udt_calls라는 구조체에 이들 모두를 저장한다고 가정 해 봅시다.
bind(...)
보다는 : 자, 그냥 같은 통화를 만드는 기존 코드에 문제가 전 세계적으로이 프로그램을 통해 어떤 BSD 호출을 대체 할 수 있습니다 깨끗한 방법이 있나요
udt_calls->bind(...)
을 내 이제 내 udt_calls 구조체에 함수 포인터가로드 되었습니까?
혹시이 작업이 완료나요 :
또 다른 옵션은 구조체에 대한 포인터를 선언 한 후 전처리 같이 정의하고 사용할 수있다? UDT를 수행하는 패치 또는 iperf 버전이 있습니까? –