SERVER.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:
Windows编程
开发平台:
Visual C++
- /*************************************************************/
- /** **/
- /** Microsoft RPC Examples **/
- /** Dictionary Application **/
- /** Copyright(c) Microsoft Corp. 1992-1996 **/
- /** **/
- /*************************************************************/
- /*
- *************************************************************************
- * *
- * Remote dictionary example: server side *
- * *
- * Description: *
- * This is the driver for the server side remote dictionary *
- * (splay trees based) demo. This is a standard server driver, *
- * and it works as follows: *
- * *
- * o Call RpcCreateServer to initialize all data structures *
- * *
- * o Initialize an appropriate protocol stack *
- * *
- * o Call RpcAddAddress to start listening on a transport address *
- * (a named pipe in our case). *
- * *
- * o Call RpcAddInterface to initialize interface specific structures *
- * (such as dispatch table, etc.) *
- * *
- * o Optionally advertise by calling RpcExport (not in this version) *
- * *
- * o Loop forever... *
- * *
- *************************************************************************
- */
- #include <stdlib.h>
- #include <stdio.h>
- #include <ctype.h>
- #include "replay.h" // header file generated by MIDL compiler
- #include "dict0.h"
- #include "util0.h"
- void Usage()
- {
- printf("Usage : server -e <endpoint>n");
- exit(1);
- }
- void _CRTAPI1
- main(int argc, char *argv[])
- {
- RPC_STATUS status;
- unsigned char * pszProtocolSequence = "ncacn_np";
- unsigned char * pszSecurity = NULL;
- unsigned char * pszEndpoint = "\pipe\dict";
- unsigned int cMinCalls = 1;
- unsigned int cMaxCalls = 20;
- unsigned int fDontWait = FALSE;
- int i;
- printf ("Microsoft RPC demo Server - Splay (Binary) Tree DataBasen");
- /* allow the user to override settings with command line switches */
- for (i = 1; i < argc; i++) {
- if ((*argv[i] == '-') || (*argv[i] == '/')) {
- switch (tolower(*(argv[i]+1))) {
- case 'e':
- pszEndpoint = argv[++i];
- break;
- case 'h':
- case '?':
- default:
- Usage();
- }
- }
- else
- Usage();
- }
- status = RpcServerUseProtseqEp(pszProtocolSequence,
- cMaxCalls,
- pszEndpoint,
- pszSecurity); // Security descriptor
- if (status) {
- printf("RpcServerUseProtseqEp returned 0x%xn", status);
- exit(status);
- }
- status = RpcServerRegisterIf(dict_ServerIfHandle, // interface to register
- NULL, // MgrTypeUuid
- NULL); // MgrEpv; null means use default
- if (status) {
- printf("RpcServerRegisterIf returned 0x%xn", status);
- exit(status);
- }
- printf("Calling RpcServerListenn");
- status = RpcServerListen(cMinCalls,
- cMaxCalls,
- fDontWait);
- if (status) {
- printf("RpcServerListen returned: 0x%xn", status);
- exit(status);
- }
- }