이번에 NFS(Network File System)을 구현해 보기 위해 RPC 프로그래밍을 공부하고 있습니다.
프로그래밍 환경은 windows xp pro sp2구요. 노턴 사의 방화벽이 설치되어 있습니다.

Platform SDK를 설치하니 RPC에 대한 샘플 소스가 있어서 nmake(이걸로 컴파일하라고 텍스트 파일에 써 있더군요..)로
컴파일하여 실행파일 만들고 돌려봤습니다. 잘 돌아갔습니다. 이 예제에서는 protocol_sequence가 ncacn_np였는데
제가 필요한 경우는 tcp/ip를 이용하는 거라서 ncacn_ip_tcp로 하고 endpoint를 5000으로 하였습니다.

그리고 idl 파일에서 pointer_default(unique) 라고 되어 있는 부분을 endpoint("ncacn_ip_tcp:xxx.xxx.xxx.xxx[5000]") 로
수정하였습니다. 이것은 msdn 예를 보고 따라 했구요.

이렇게 해서 서버를 가동시키니 방화벽에서 이 포트에 대해서 모두 허락할거냐고 메시지가 뜨길래 수락했구요. 서버 코드는
hellos.c 파일인데, 호출되는 함수대로 잘 진행되었습니다. 리턴 값은 다 정상이었습니다. RpcServerListen 함수를 호출된 상황에서
프로세스가 대기하고 있더군요. 클라이언트에서 서버쪽 프로시저, 즉 remote procedure를 호출할 때까지 대기하는 것 같습니다.

그런 후에 클라이언트를 실행시켰는데 이때 protocol_sequence는 ncacn_ip_tcp로 하고 network_address는 제 ip로, 그리고
endpoint를 5000으로 설정하였습니다. 그런데 실행이 제대로 안 되었습니다.

클라이언트에서 원격 서버의 프로시저를 호출하니까 반환값이 5번 이었습니다. 어떤 이유인지 확인해보니(msdn)
RPC_S_ACCESS_DENIED (Access for making the remote procedure call was denied.) 였습니다. 서버에서는
RpcServerListen 함수를 호출된 상황에서 아무런 클라이언트 접속도 못 받았구요. 왜 이런 이유가 발생하는지 잘 모르겠습니다.
방화벽에서는 분명 접속하는 부분을 수락했는데.. 어떤 경우에 이런 상황이 발생할 수 있을까요.. 아니면 제가 잘못 설정한 부분이
있는 걸까요..

ps. 이런 쪽으로 프로그래밍 해보신 분이 계실지 잘 모르겠습니다만, 마땅히 자문 구할데가 없어 글 올려봅니다 ㅠ.