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

📄 bindresvport.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)bindresvport.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.     * *                                                                      * ************************************************************************//* * Copyright (c) 1987 by Sun Microsystems, Inc. *//*      change log *      04/12/89  jhw   Synced code to SUN V4.0 */#include <sys/types.h>#include <sys/errno.h>#include <sys/socket.h>#include <netinet/in.h>/* * Bind a socket to a privileged IP port */bindresvport(sd, sin)	int sd;	struct sockaddr_in *sin;{	int res;	static short port;	struct sockaddr_in myaddr;	extern int errno;	int i;#define STARTPORT 825#define ENDPORT (IPPORT_RESERVED - 1)#define NPORTS	(ENDPORT - STARTPORT + 1)	if (sin == (struct sockaddr_in *)0) {		sin = &myaddr;		bzero(sin, sizeof (*sin));		sin->sin_family = AF_INET;	} else if (sin->sin_family != AF_INET) {		errno = EPFNOSUPPORT;		return (-1);	}	if (port == 0) {		port = (getpid() % NPORTS) + STARTPORT;	}	res = -1;	errno = EADDRINUSE;	for (i = 0; i < NPORTS && res < 0 && errno == EADDRINUSE; i++) {		sin->sin_port = htons(port++);		if (port > ENDPORT) {			port = STARTPORT;		}		res = bind(sd, sin, sizeof(struct sockaddr_in));	}	return (res);}

⌨️ 快捷键说明

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