亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? res_send.c

?? vxworks的完整的源代碼
?? C
字號:
/* res_send.c - *//* Copyright 1984-2001 Wind River Systems, Inc. */#include "copyright_wrs.h"/* * Copyright (c) 1985, 1989 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *//*modification history--------------------01c,05nov01,vvv fixed compilation warning; cleaned up use of register01b,04sep01,vvv fixed to correctly query multiple servers (SPR #67238);                fixed compilation warnings01a,13dec96,jag Cleaned up.  Added resolv prefix. Man pages can be found in                files resolvLib.c.  Added code for pdnsDebugFunc.*//* * Send query to name server and wait for reply. */#include <sys/times.h>#include <resolvLib.h>#include <sockLib.h>#include <net/uio.h>#include <unistd.h>#include <string.h>#include "ioLib.h"extern FUNCPTR pdnsDebugFunc;#ifndef FD_SET#define	NFDBITS		32#define	FD_SETSIZE	32#define	FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))#define	FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))#define	FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))#define FD_ZERO(p)	bzero((char *)(p), sizeof(*(p)))#endifint resolvSend(buf, buflen, answer, anslen)	const char *buf;	int buflen;	char *answer;	int anslen;{	int n = 0;	int try, v_circuit, resplen, ns;	int gotsomewhere = 0, connected = 0;	int connreset = 0;	u_short id, len;	char *cp;	fd_set dsmask;	struct timeval timeout;	HEADER *hp = (HEADER *) buf;	HEADER *anhp = (HEADER *) answer;	struct iovec iov[2];	int terrno = ETIMEDOUT;	char junk[512];	int start;      /* pointer to server we start querying with */        int s = -1;	/* socket used for communications */        struct sockaddr no_addr;        bzero ((char*) &no_addr, sizeof no_addr);#ifdef ORG_RESOLVER#ifdef DEBUG	if (_res.options & RES_DEBUG) {		printf("resSend()\n");		__p_query(buf);	}#endif /* DEBUG */#else	if (pdnsDebugFunc != (FUNCPTR) NULL)	    {	    printf("resolvSend()\n");	    (*pdnsDebugFunc)(buf);	    }#endif /* ORG_RESOLVER */#ifdef ORG_RESOLVER	/* Unecessary test under VxWorks */	if (!(_res.options & RES_INIT))		if (res_init() == -1) {			return(ERROR);		}#endif /* ORG_RESOLVER */	v_circuit = (_res.options & RES_USEVC) || buflen > PACKETSZ;	id = hp->id;	/*	 * Send request, RETRY times, or until successful	 */	for (try = 0; try < _res.retry; try++) {	   start = MAXDNSLUS;	   for (ns = 0; ns < _res.nscount; ns++) {		/*		 * Only query servers marked active or appearing after		 * a server marked as active. This prevents this loop		 * from rescanning the entire array every time resolvSend 	         * is called		 */		if ((_res.lookups [ns] != 'a') && (ns < start))		    continue;		if (ns > start)		    _res.lookups [ns] = 'd';  /* mark as 'done' */		start = ns;#ifdef DEBUG		if (_res.options & RES_DEBUG)			printf("Querying server (# %d) address = %s\n", ns+1,			      inet_ntoa(_res.nsaddr_list[ns].sin_addr));#endif /* DEBUG */	usevc:		if (v_circuit) {			int truncated = 0;			/*			 * Use virtual circuit;			 * at most one attempt per server.			 */			try = _res.retry;			if (s < 0) {				s = socket(AF_INET, SOCK_STREAM, 0);				if (s < 0) {					terrno = errno;#ifdef DEBUG					if (_res.options & RES_DEBUG)					    perror("socket (vc) failed");#endif /* DEBUG */					continue;				}				if (connect(s,				    (struct sockaddr *)&(_res.nsaddr_list[ns]),				    sizeof(struct sockaddr)) < 0) {					terrno = errno;#ifdef DEBUG					if (_res.options & RES_DEBUG)					    perror("connect failed");#endif /* DEBUG */					(void) close(s);					s = -1;					continue;				}			}			/*			 * Send length & message			 */			len = htons((u_short)buflen);			iov[0].iov_base = (caddr_t)&len;			iov[0].iov_len = sizeof(len);			iov[1].iov_base = (char *)buf;			iov[1].iov_len = buflen;			if (writev(s, iov, 2) != sizeof(len) + buflen) {				terrno = errno;#ifdef DEBUG				if (_res.options & RES_DEBUG)					perror("write failed");#endif /* DEBUG */				(void) close(s);				s = -1;				continue;			}			/*			 * Receive length & response			 */			cp = answer;			len = sizeof(short);			while (len != 0 &&			    (n = read(s, (char *)cp, (int)len)) > 0) {				cp += n;				len -= n;			}			if (n <= 0) {				terrno = errno;#ifdef DEBUG				if (_res.options & RES_DEBUG)					perror("read failed");#endif /* DEBUG */				(void) close(s);				s = -1;				/*				 * A long running process might get its TCP				 * connection reset if the remote server was				 * restarted.  Requery the server instead of				 * trying a new one.  When there is only one				 * server, this means that a query might work				 * instead of failing.  We only allow one reset				 * per query to prevent looping.				 */				if (terrno == ECONNRESET && !connreset) {					connreset = 1;					ns--;				}				continue;			}			cp = answer;			if ((resplen = ntohs(*(u_short *)cp)) > anslen) {#ifdef DEBUG				if (_res.options & RES_DEBUG)					fprintf(stderr, "response truncated\n");#endif /* DEBUG */				len = anslen;				truncated = 1;			} else				len = resplen;			while (len != 0 &&			   (n = read(s, (char *)cp, (int)len)) > 0) {				cp += n;				len -= n;			}			if (n <= 0) {				terrno = errno;#ifdef DEBUG				if (_res.options & RES_DEBUG)					perror("read failed");#endif /* DEBUG */				(void) close(s);				s = -1;				continue;			}			if (truncated) {				/*				 * Flush rest of answer				 * so connection stays in synch.				 */				anhp->tc = 1;				len = resplen - anslen;				while (len != 0) {					n = (len > sizeof(junk) ?					    sizeof(junk) : len);					if ((n = read(s, junk, n)) > 0)						len -= n;					else						break;				}			}		} else {			/*			 * Use datagrams.			 */			if (s < 0) {				s = socket(AF_INET, SOCK_DGRAM, 0);				if (s < 0) {					terrno = errno;#ifdef DEBUG					if (_res.options & RES_DEBUG)					    perror("socket (dg) failed");#endif /* DEBUG */					continue;				}			}#if	BSD >= 43			/*			 * I'm tired of answering this question, so:			 * On a 4.3BSD+ machine (client and server,			 * actually), sending to a nameserver datagram			 * port with no nameserver will cause an			 * ICMP port unreachable message to be returned.			 * If our datagram socket is "connected" to the			 * server, we get an ECONNREFUSED error on the next			 * socket operation, and select returns if the			 * error message is received.  We can thus detect			 * the absence of a nameserver without timing out.			 * If we have sent queries to at least two servers,			 * however, we don't want to remain connected,			 * as we wish to receive answers from the first			 * server to respond.			 */			if (_res.nscount == 1 || (try == 0 && ns == 0)) {				/*				 * Don't use connect if we might				 * still receive a response				 * from another server.				 */				if (connected == 0) {			if (connect(s, (struct sockaddr *)&_res.nsaddr_list[ns],					    sizeof(struct sockaddr)) < 0) {#ifdef DEBUG						if (_res.options & RES_DEBUG)							perror("connect");#endif /* DEBUG */						continue;					}					connected = 1;				}				if (send(s, buf, buflen, 0) != buflen) {#ifdef DEBUG					if (_res.options & RES_DEBUG)						perror("send");#endif /* DEBUG */					continue;				}			} else {				/*				 * Disconnect if we want to listen				 * for responses from more than one server.				 */				if (connected) {					(void) connect(s, &no_addr,					    sizeof(no_addr));					connected = 0;				}#endif /* BSD */				if (sendto(s, (char *) buf, buflen, 0,				    (struct sockaddr *)&_res.nsaddr_list[ns],				    sizeof(struct sockaddr)) != buflen) {#ifdef DEBUG					if (_res.options & RES_DEBUG)						perror("sendto");#endif /* DEBUG */					continue;				}#if	BSD >= 43			}#endif			/*			 * Wait for reply			 */			timeout.tv_sec = (_res.retrans << try);			if (try > 0)				timeout.tv_sec /= _res.nscount;			if (timeout.tv_sec <= 0)				timeout.tv_sec = 1;			timeout.tv_usec = 0;wait:			FD_ZERO(&dsmask);			FD_SET(s, &dsmask);			n = select(s+1, &dsmask, (fd_set *)NULL,				(fd_set *)NULL, &timeout);			if (n < 0) {#ifdef DEBUG				if (_res.options & RES_DEBUG)					perror("select");#endif /* DEBUG */				continue;			}			if (n == 0) {				/*				 * timeout				 */#ifdef DEBUG				if (_res.options & RES_DEBUG)					printf("timeout\n");#endif /* DEBUG */#if BSD >= 43				gotsomewhere = 1;#endif				continue;			}			if ((resplen = recv(s, answer, anslen, 0)) <= 0) {#ifdef DEBUG				if (_res.options & RES_DEBUG)					perror("recvfrom");#endif /* DEBUG */				continue;			}			gotsomewhere = 1;			if (id != anhp->id) {				/*				 * response from old query, ignore it				 */#ifdef ORG_RESOLVER#ifdef DEBUG				if (_res.options & RES_DEBUG) {					printf("old answer:\n");					__p_query(answer);				}#endif /* DEBUG */#else				if (pdnsDebugFunc != (FUNCPTR) NULL)				    {				    printf("old answer:\n");				    (*pdnsDebugFunc)(answer);				    }#endif /* ORG_RESOLVER */				goto wait;			}			if (!(_res.options & RES_IGNTC) && anhp->tc) {				/*				 * get rest of answer;				 * use TCP with same server.				 */#ifdef DEBUG				if (_res.options & RES_DEBUG)					printf("truncated answer\n");#endif /* DEBUG */				(void) close(s);				s = -1;				v_circuit = 1;				goto usevc;			}		}#ifdef ORG_RESOLVER#ifdef DEBUG		if (_res.options & RES_DEBUG) {			printf("got answer:\n");			__p_query(answer);		}#endif /* DEBUG */#else		if (pdnsDebugFunc != (FUNCPTR) NULL)		    {		    printf("got answer:\n");		    (*pdnsDebugFunc)(answer);		    }#endif /* ORG_RESOLVER */		/*		 * If using virtual circuits, we assume that the first server		 * is preferred * over the rest (i.e. it is on the local		 * machine) and only keep that one open.		 * If we have temporarily opened a virtual circuit,		 * or if we haven't been asked to keep a socket open,		 * close the socket.		 */		if ((v_circuit &&		    ((_res.options & RES_USEVC) == 0 || ns != 0)) ||		    (_res.options & RES_STAYOPEN) == 0) {			(void) close(s);			s = -1;		}		return (resplen);	   }	}	if (s >= 0) {		(void) close(s);		s = -1;	}	if (v_circuit == 0)		if (gotsomewhere == 0)			errno = ECONNREFUSED;	/* no nameservers found */		else			errno = ETIMEDOUT;	/* no answer obtained */	else		errno = terrno;	return (ERROR);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久国色av免费看影院| 欧美精选一区二区| 中文字幕av在线一区二区三区| 琪琪一区二区三区| 精品成人一区二区| 不卡一区二区三区四区| 一区二区三区美女视频| 欧美美女一区二区| 久久99热99| 国产精品久久久久久久久久免费看| 91看片淫黄大片一级在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 在线观看一区日韩| 美女在线视频一区| 中文字幕日韩av资源站| 欧美日韩一区国产| 国产黄色成人av| 亚洲一区在线观看网站| 精品电影一区二区| 欧美综合亚洲图片综合区| 久草精品在线观看| 亚洲人成在线播放网站岛国| 日韩一级片在线播放| 99久久99久久精品国产片果冻| 亚洲aaa精品| 中文久久乱码一区二区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美性大战久久| 国模一区二区三区白浆| 亚洲最快最全在线视频| 久久一夜天堂av一区二区三区| 色综合咪咪久久| 精品一二三四区| 亚洲一级片在线观看| 国产色产综合色产在线视频| 欧美色倩网站大全免费| 国产乱淫av一区二区三区| 亚洲高清免费观看| 成人欧美一区二区三区黑人麻豆 | 日韩一区二区影院| 色伊人久久综合中文字幕| 久久99国内精品| 亚洲线精品一区二区三区八戒| 久久精品视频在线免费观看 | 久久久久久日产精品| 欧美日韩久久久一区| 成人一区二区三区视频| 精品写真视频在线观看| 日韩在线一区二区| 亚洲精品午夜久久久| 欧美国产一区二区| 久久人人超碰精品| 日韩久久久精品| 91精品国产综合久久婷婷香蕉 | 丁香婷婷综合网| 麻豆精品国产传媒mv男同| 国产成人免费xxxxxxxx| 日韩av一级片| 亚洲大片精品永久免费| 亚洲少妇最新在线视频| 国产日产欧产精品推荐色| 久久久亚洲精品一区二区三区| 日韩限制级电影在线观看| 欧美日韩黄色影视| 欧美日韩在线观看一区二区| 日本精品一区二区三区高清 | 欧美mv和日韩mv的网站| 国产麻豆91精品| 亚洲制服丝袜av| 精品国产精品网麻豆系列| 91香蕉国产在线观看软件| 午夜亚洲福利老司机| 精品成人私密视频| 欧美人xxxx| www.亚洲激情.com| 国产成人综合在线观看| 日韩精品高清不卡| 日本一区二区三区在线观看| 欧美一级免费大片| 91伊人久久大香线蕉| 国产成人精品亚洲午夜麻豆| 偷拍一区二区三区四区| 国产欧美日韩在线| 精品国产自在久精品国产| 亚洲一区二区视频在线| 国产亚洲欧美一区在线观看| 欧美一区二区三区性视频| 欧美亚洲自拍偷拍| 99久久精品国产毛片| 91丝袜高跟美女视频| 日韩精品国产精品| 97精品国产露脸对白| 欧美亚州韩日在线看免费版国语版| 91欧美一区二区| 欧美三级日韩在线| 国产一区二区导航在线播放| 最新高清无码专区| 欧美激情中文字幕一区二区| 久久这里只精品最新地址| 国产精品大尺度| 波多野结衣91| 日韩国产高清影视| 国产精品久久毛片| 一级女性全黄久久生活片免费| 夜夜嗨av一区二区三区中文字幕| 亚洲第一搞黄网站| 国产精品资源站在线| 成人黄色综合网站| 91麻豆精品国产无毒不卡在线观看| 欧美不卡一二三| 亚洲三级理论片| 久久精品国产秦先生| 99久久99久久精品国产片果冻 | 亚洲欧美激情在线| 午夜日韩在线电影| 久久91精品久久久久久秒播| 国产激情视频一区二区在线观看 | 狠狠色2019综合网| 91视频.com| 日韩一级片网址| 亚洲色欲色欲www| 亚洲成a人片在线观看中文| 久久精品噜噜噜成人av农村| 国产69精品久久久久毛片| 91精品婷婷国产综合久久性色| 久久久久久日产精品| 日韩影院免费视频| 欧美性感一类影片在线播放| 久久日韩粉嫩一区二区三区| 一区二区三区在线视频免费 | 亚洲品质自拍视频网站| 三级一区在线视频先锋 | 亚洲柠檬福利资源导航| 国产成人免费在线观看不卡| **欧美大码日韩| 日韩av在线播放中文字幕| 国产精品国产馆在线真实露脸 | 亚洲精品一区二区三区99| 欧美日韩中文字幕一区二区| 白白色亚洲国产精品| 波波电影院一区二区三区| 欧美日韩国产一区| 亚洲色图欧洲色图| 国产不卡一区视频| 久久影院电视剧免费观看| 日韩精品每日更新| 欧美日韩国产一级二级| 亚洲人成小说网站色在线| 成人免费视频网站在线观看| 精品久久久久av影院| 日本不卡高清视频| 69p69国产精品| 一区二区欧美国产| 色综合天天综合网天天看片| 国产精品天干天干在观线| 国产乱色国产精品免费视频| 精品久久人人做人人爰| 久久不见久久见免费视频1| 欧美一级日韩一级| 日本vs亚洲vs韩国一区三区| 欧美肥妇bbw| 午夜私人影院久久久久| 欧美性猛交xxxx乱大交退制版 | 久久久亚洲精华液精华液精华液| 另类的小说在线视频另类成人小视频在线 | 亚洲欧洲精品成人久久奇米网| 成人午夜免费视频| 国产精品不卡在线| 91免费版pro下载短视频| 亚洲欧洲成人av每日更新| 91网页版在线| 一区二区三区自拍| 欧美日韩卡一卡二| 免费一级片91| 国产亚洲精品资源在线26u| 粉嫩aⅴ一区二区三区四区 | 日韩经典一区二区| 欧美一区二区三区男人的天堂| 免费看欧美女人艹b| 欧美精品一区二区久久久| 成人一级片网址| 亚洲免费电影在线| 欧美日韩视频在线一区二区| 日韩成人午夜精品| 精品av久久707| 99视频一区二区三区| 亚洲国产综合91精品麻豆 | 亚洲精品一区二区三区蜜桃下载| 国产酒店精品激情| 日韩美女视频一区二区| 欧美乱妇15p| 高清在线不卡av| 一区二区在线免费观看| 日韩视频免费观看高清完整版在线观看| 麻豆精品视频在线观看免费| 国产精品毛片大码女人| 欧美日韩精品欧美日韩精品| 国产在线麻豆精品观看| 亚洲人亚洲人成电影网站色| 51午夜精品国产|