네트워크 프로그래밍 인터페이스

네트워크 프로그래밍 인터페이스 또는 NPI는 서로 연결할 수 있는 네트워크 모듈 간의 인터페이스를 정의합니다. 특정 NPI의 클라이언트로 등록된 클라이언트 모듈 은 동일한 NPI의 공급자로 등록된 공급자 모듈 에만 연결할 수 있습니다. 마찬가지로 특정 NPI의 공급자로 등록된 공급자 모듈은 동일한 NPI의 클라이언트로 등록된 클라이언트 모듈에만 연결할 수 있습니다.

각 NPI는 다음 항목을 정의합니다.

  • NPI를 고유하게 식별하는 NPI 식별자입니다. 네트워크 모듈은 네트워크 모듈이 NMR(네트워크 모듈 등록 기관)에 등록할 때 지원하는 특정 NPI를 나타내는 NPI 식별자를 지정합니다. 네트워크 모듈은 NMR에 여러 번 등록하여 지원하는 각 NPI에 대해 한 번씩 여러 NPI를 지원할 수 있습니다. NMR은 둘 다 동일한 NPI를 지원하는 경우에만 클라이언트 모듈을 공급자 모듈에 연결하기 시작합니다.

  • 각 클라이언트 모듈 NPI별 특성을 지정하는 선택적 클라이언트 특성 구조체입니다. 이러한 NPI 관련 특성에는 클라이언트 모듈이 지원하는 NPI의 버전(또는 버전) 또는 클라이언트 모듈에 필요한 패밀리 또는 프로토콜 주소와 같은 항목이 포함될 수 있습니다. 공급자 모듈은 클라이언트 모듈의 클라이언트 특성 구조에 포함된 정보를 사용하여 클라이언트 모듈에 연결할지 여부를 결정할 수 있습니다. NPI에서 NPI 관련 클라이언트 특성을 정의하지 않는 경우 이 구조가 필요하지 않습니다.

  • 각 공급자 모듈 NPI별 특성을 지정하는 선택적 공급자 특성 구조체입니다. 이러한 NPI 관련 특성에는 공급자 모듈이 지원하는 NPI의 버전(또는 버전) 또는 공급자 모듈이 지원하는 패밀리 또는 프로토콜 주소와 같은 항목이 포함될 수 있습니다. 클라이언트 모듈은 공급자 모듈의 클라이언트 특성 구조에 포함된 정보를 사용하여 공급자 모듈에 연결할지 여부를 결정할 수 있습니다. NPI가 NPI 관련 공급자 특성을 정의하지 않는 경우 이 구조가 필요하지 않습니다.

  • 클라이언트 모듈 콜백 함수가 0개 이상입니다. 공급자 모듈이 클라이언트 모듈에 성공적으로 연결되면 공급자 모듈은 클라이언트 모듈의 콜백 함수를 호출하여 클라이언트 모듈의 기능에 액세스할 수 있습니다.

  • 하나 이상의 공급자 모듈 함수입니다. 클라이언트 모듈이 공급자 모듈에 성공적으로 연결되면 클라이언트 모듈은 공급자 모듈의 함수를 호출하여 공급자 모듈의 기능에 액세스할 수 있습니다.

  • 각 클라이언트 모듈 콜백 함수에 대한 함수 포인터를 포함하는 클라이언트 디스패치 테이블 구조체입니다. NPI가 클라이언트 모듈 콜백 함수를 정의하지 않는 경우 이 구조는 필요하지 않습니다.

  • 각 공급자 모듈 함수에 대한 함수 포인터를 포함하는 공급자 디스패치 테이블 구조체입니다.

특정 NPI를 지원하는 클라이언트 모듈은 NPI에서 정의한 항목을 사용하여 인터페이스의 클라이언트 쪽을 구현합니다. 마찬가지로 특정 NPI를 지원하는 공급자 모듈은 NPI에서 정의한 항목을 사용하여 인터페이스의 공급자 쪽을 구현합니다.

NPI에서 정의한 모든 항목은 NPI 식별자를 제외하고 NMR에 불투명합니다. NMR은 NPI 식별자를 사용하여 어떤 클라이언트 모듈을 어떤 공급자 모듈에 연결해야 하는지 결정합니다.