環境:VC++6.0
1.首先利用uuidgen.exe /i /Rpc.idl命令產生一個Rpc.idl檔案(檔案名稱字自己取,但必須是.idl類型)。
組建檔案內容格式如下
[
uuid(abb12775-f053-4c62-95c2-4d9bc7fdbfef),
version(1.0)
]
interface INTERFACENAME
{
}
2.在 interface INTERFACENAME 的括弧內寫入你在伺服器端要調用的函數。
比如:(下列代碼來自:http://www.codeproject.com/KB/IP/rpcintro2.aspx)
// File ContextExample.idl
[
// A unique identifier that distinguishes this interface from other interfaces.
uuid(00000003-EAF3-4A7A-A0F2-BCE4C30DA77E),
// This is version 1.0 of this interface.
version(1.0)
]
interface ContextExample // The interface is named ContextExample
{
// To fully use context handles we need to do a typedef.
typedef [context_handle] void* CONTEXT_HANDLE;
// Open a context on the server.
CONTEXT_HANDLE Open(
// Explicit server binding handle.
[in] handle_t hBinding,
// String to be output on the server.
[in, string] const char* szString);
// Output the context string on the server.
void Output(
// Context handle. The binding handle is implicitly
// used through the explicit context handle.
[in] CONTEXT_HANDLE hContext);
// Closes a context on the server.
void Close(
// Context handle. The binding handle is implicitly
// used through the explicit context handle.
[in, out] CONTEXT_HANDLE* phContext);
}
3.對產生的.idl檔案執行 MIDL.EXE ContextExample.idl(檔案名稱根據你的自己檔案名稱而定)
這樣會產生:ContextExample.h ContextExample_s.c ContextExample_c.c 3個檔案。
4.產生2個工程,一個是伺服器端,一個是用戶端。
將ContextExample.idl ContextExample.h ContextExample_s.c 匯入伺服器端工程;
將ContextExample.idl ContextExample.h ContextExample_c.c 匯入用戶端工程。
5.在伺服器端編寫被調用函數的實現代碼,在用戶端編寫調用代碼就可以進行RPC方式的C/S程式的測試。
不過這種方式和直接使用Socket或CSocket哪個更適合某些實際的應用,還待實驗!