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

📄 clnt_simple.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)clnt_simple.c	4.1	ULTRIX	7/3/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1986 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//* *	Portions of this software have been licensed to  *	Digital Equipment Company, Maynard, MA. *	Copyright (c) 1986 Sun Microsystems, Inc.  ALL RIGHTS RESERVED. *//*  * clnt_simple.c * Simplified front end to rpc. * */#include <stdio.h>#include <rpc/rpc.h>#include <sys/socket.h>#include <sys/time.h>#include <netdb.h>char *malloc();static CLIENT *client;static int socket;static int oldprognum, oldversnum, valid;static char *oldhost;callrpc(host, prognum, versnum, procnum, inproc, in, outproc, out)	char *host;	xdrproc_t inproc, outproc;	char *in, *out;{	struct sockaddr_in server_addr;	enum clnt_stat clnt_stat;	struct hostent *hp;	struct timeval timeout, tottimeout;	if (oldhost == NULL) {		oldhost = malloc(256);		oldhost[0] = 0;		socket = RPC_ANYSOCK;	}	if (valid && oldprognum == prognum && oldversnum == versnum		&& strcmp(oldhost, host) == 0) {		/* reuse old client */			}	else {		valid = 0;		close(socket);		socket = RPC_ANYSOCK;		if (client) {			clnt_destroy(client);			client = NULL;		}		if ((hp = gethostbyname(host)) == NULL)			return ((int) RPC_UNKNOWNHOST);		timeout.tv_usec = 0;		timeout.tv_sec = 5;		bcopy(hp->h_addr, &server_addr.sin_addr, hp->h_length);		server_addr.sin_family = AF_INET;		server_addr.sin_port =  0;		if ((client = clntudp_create(&server_addr, prognum,		    versnum, timeout, &socket)) == NULL)			return ((int) rpc_createerr.cf_stat);		valid = 1;		oldprognum = prognum;		oldversnum = versnum;		strcpy(oldhost, host);	}	tottimeout.tv_sec = 25;	tottimeout.tv_usec = 0;	clnt_stat = clnt_call(client, procnum, inproc, in,	    outproc, out, tottimeout);	/* 	 * if call failed, empty cache	 */	if (clnt_stat != RPC_SUCCESS)		valid = 0;	return ((int) clnt_stat);}

⌨️ 快捷键说明

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