⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 billboard_rpc.c

📁 早期freebsd实现
💻 C
字号:
/* ****************************************************************************** * * Module: billboard_rpc.c * * Description: billboard_rpc.c *		Conatins routines that handle RPC calls. * * Functions: *	bb_call_rpc(func_p, arg_p) *	_get_handle() * * Notes: * ****************************************************************************** *//* ****************************************************************************** * Include Files ****************************************************************************** */#include <stdio.h>#include <rpc/rpc.h>#include "common.h"#include "protocol.h"/* ****************************************************************************** * Manifest Constants ****************************************************************************** */#define	_SERVER_NAME		"BB_SERVER"	/* environment variable to						   set the billboard server 						   name */#define	_SERVER_NAME_LEN	64/* ****************************************************************************** * Global Declarations ****************************************************************************** */CLIENT	*client_handle_p;		/* request client handle */char	server_name[_SERVER_NAME_LEN]; 	/* name of the billboard server *//* ****************************************************************************** * Function Declarations ****************************************************************************** */static CLIENT 	*_get_handle();char 		*bb_call_rpc();/* ****************************************************************************** * * Function: bb_call_rpc * * Description: *	Gets client handle and does the remote procedure call. * * Input: *	func_p -- address of remote procedure  *	arg_p -- input arguments to the remote procedure * * Output: * * Returns: *	result of the RPC call * * Side Effects: * * Notes: * ****************************************************************************** */char *bb_call_rpc(func_p, arg_p)char	*(*func_p)();char	*arg_p;{	/*	 * gets client handle	 */	if (client_handle_p == NULL)		client_handle_p= _get_handle();	/*	 * do the RPC call	 */	return((char *)(*func_p)(arg_p, client_handle_p));}/* ****************************************************************************** * * Function: _get_handle * * Description: *	Gets client handle for the RPC call. *	The server name may be specified in the environment       *	variable BB_SERVER, otherwise, the user will be prompted  *	for one.						 * * Input: * * Output: * * Returns: *	client handle * * Side Effects: * * Notes: * ****************************************************************************** */staticCLIENT *_get_handle(){char	*server_p;char	buffer[BB_MAX_LINE_LEN];char	*getenv();CLIENT 	*cl_handle_p;	/*	 * gets the server name from the environment variable, if not specified	 * the user will be prompted	 */	if ((server_p= getenv(_SERVER_NAME)) == NULL) {		printf("Server name: ");		gets(buffer);		sscanf(buffer, "%s", server_name);			} else		strcpy(server_name, server_p);	/*	 * gets a client handle	 */	if ((cl_handle_p= clnt_create(server_name, BILLBOARD_PROG, 					BILLBOARD_VERS, "tcp")) == NULL) {		clnt_pcreateerror(server_name);		exit(1);	}	return(cl_handle_p);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -