// myclient.cpp : Defines the entry point for the console application.
#include"stdafx.h" #include<windows.h> #include<stdio.h> #include"my_h.h" #pragma comment(lib,"rpcrt4") #pragma comment(lib,"ole32") int main(void){ RPC_STATUS status; RPC_BINDING_HANDLE hwBinding; unsigned char* szStringBinding=NULL; status=RpcStringBindingCompose(//建立一个String Binding句柄,并不连接
NULL, (RPC_CSTR)("ncacn_ip_tcp"), (RPC_CSTR)("localhost"), (RPC_CSTR)("4747"), NULL, (RPC_CSTR*)&szStringBinding); if(status){ printf("StringBinding failed\n"); exit(status);} printf("szString=%s\n",szStringBinding); status=RpcBindingFromStringBinding( szStringBinding, &hwBinding); if(status){ printf("Bind from String failed:%d\n",GetLastError()); exit(status);} RpcTryExcept{ Hello(hwBinding,(RPC_CSTR)("Hello RPC World!")); } RpcExcept(1){ printf("Runtime reported exception:%d,except=%d\n",GetLastError(),RpcExceptionCode()/*RPC_S_ACCESS_DENIED==5L*/);//这里返回了5
} RpcEndExcept status = RpcBindingFree(&hwBinding); // Frees the binding handle.
if (status){ printf("Bind free failed\n"); exit(status);} return 0; } void* __RPC_USER midl_user_allocate(size_t size){ return malloc(size); } // Memory deallocation function for RPC.
void __RPC_USER midl_user_free(void* p){ free(p); } |