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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? irdaspray.c

?? linux操作系統下的紅外驅動的測試程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
		       sizeof(ias_query))) 	  {	    printf("Can't remove <Device><Owner> in IAS\n");	    perror("setsockopt");	  }	/* Delete the last string in IAS */	if (echo)		strcpy(ias_query.irda_class_name, "IrECHO");	else		strcpy(ias_query.irda_class_name, "IrDISCARD");	strcpy(ias_query.irda_attrib_name, "App-Name");	if (setsockopt(fd, SOL_IRLMP, IRLMP_IAS_DEL, &ias_query, 		       sizeof(ias_query))) 	  {	    printf("Can't remove <IrECHO><App-Name> in IAS\n");	  }	/* Delete the other integer in IAS */	strcpy(ias_query.irda_class_name, "");	strcpy(ias_query.irda_attrib_name, "App-Version");	if (setsockopt(fd, SOL_IRLMP, IRLMP_IAS_DEL, &ias_query, 		       sizeof(ias_query))) 	  {	    printf("Can't remove <><App-Version> in IAS\n");	    perror("setsockopt");	  }	/* Try to delete a kernel attribute (should fail) */	strcpy(ias_query.irda_class_name, "Device");	strcpy(ias_query.irda_attrib_name, "DeviceName");	if (setsockopt(fd, SOL_IRLMP, IRLMP_IAS_DEL, &ias_query, 		       sizeof(ias_query))) 	  {	    printf("Can't remove <Device><DeviceName> in IAS\n");	    perror("setsockopt");	  }	/* Try to delete a non-existing attribute (should fail) */	strcpy(ias_query.irda_class_name, "None");	strcpy(ias_query.irda_attrib_name, "None");	if (setsockopt(fd, SOL_IRLMP, IRLMP_IAS_DEL, &ias_query, 		       sizeof(ias_query))) 	  {	    printf("Can't remove <None><None> in IAS\n");	    perror("setsockopt");	  }}/* * Function irdaspray_connect_request (self) * *    Try to connect to remote device * */static int irdaspray_connect_request(int fd){	struct sockaddr_irda peer;	struct sockaddr_irda self;	char *service_name;	int len = sizeof(int);	int daddr;#if AUTOCONNECT	int err;#endif	/* Set the service name */	if (echo)		service_name = "IrECHO";	else		service_name = "IrDISCARD";#if WAITFORDEVICE	/* Wait until a device is in range */	if(irdaspray_waitfor_device(fd))		return -1;#endif#if AUTOCONNECT	/*	 * First, we try the auto-connect, which in 99% of the case	 * should be good enough...	 *	 * Auto connect lookup devices in range and query them about the	 * service we want. If there is only one device that support	 * this service, we are magically connected to it...	 */	peer.sir_family = AF_IRDA;	strncpy(peer.sir_name, service_name, 25);	peer.sir_addr = 0x0;	/* Maybe DEV_ADDR_ANY is better ? */		err = connect(fd, (struct sockaddr*) &peer, 		      sizeof(struct sockaddr_irda));	/* Check what has happened */	if(err == 0) {		printf("Auto-connect did found exactly one device !\n");		return 0;	}	if(errno == EADDRNOTAVAIL) {		printf("Auto-connect could not find anything...\n");		return -1;	}	if(errno != ENOTUNIQ)		printf("Auto-connect failed...\n");	else		printf("Auto-connect has found more than one device...\n");#endif	/*	 * At this point, if we don't have any user interface or if we	 * don't want to bother with that, we could just tell the user	 * to aim its device closer to the target and just quit...	 * (or we could pretend that we have seen nothing, which will	 * end up with the same result on the user)	 * However, for the purpose of the exercise, let's pretend that	 * the user doesn't want to move his device and has plenty of UI...	 */	/* Make a proper discovery, display device and ask user to choose */	daddr = irdaspray_discover_devices(fd, service_name);	if (daddr == -1)		return -1;	/* Now we can try again to connect using the address selected */	peer.sir_family = AF_IRDA;	strncpy(peer.sir_name, service_name, 25);	peer.sir_addr = daddr;		if (connect(fd, (struct sockaddr*) &peer, 		    sizeof(struct sockaddr_irda))) {		perror("connect");		return -1;	}#if GETSOCKNAME	/* Get out info about our socket (local, not remote) */	len = sizeof(struct sockaddr_irda);	if (getsockname(fd, (struct sockaddr*) &self, &len)) {		perror("getsockname");		return -1;	}	printf("We have been assigned Address 0x%X and LSAP 0x%02X...\n",	       self.sir_addr, self.sir_lsap_sel);	/* Note : getsockname return a valid lsap after a connect or a bind,	 * but return a valid addr only after an accept, and with my patch	 * also after a connect.	 */#endif	printf("Connected!\n");	/* Test if IR-IAS is happy */#if SETIAS	irias_play(fd);#endif#if DELIAS	irias_remove(fd);#endif	return 0;}int irdaspray_transmit(int fd){	int total = 0;	int actual;	int i;	/* Transmit frames */	for (i=0; i<frame_number; i++) {		actual = send(fd, buf, frame_size, 0);		total += actual;	}	return total;}int irdaspray_receive(int fd){	int total = 0;	int actual;	int i;	/* Receive frames */	for (i=0; i<frame_number; i++) {		actual = recv(fd, buf, sizeof(buf), 0);		total += actual;	}	return total;}/* * Function ir_client () * *    Implements IrDA Echo or Discard client * */int ir_client(void){	int fd;		/* The most important : the socket !!! */	struct timeval start, end;	int total;	double time;	int status;	int ret;	int pid = 0;		/* Sender/Receiver */	int tpid = 0;		/* First/second instance */	/* Create socket */	fd = socket(AF_IRDA, SOCK_SEQPACKET, 0);	if (fd < 0) {		perror("socket");		exit(-1);        }	/* Try connect */	ret = irdaspray_connect_request(fd);	if (ret) {		return -1;	}		gettimeofday(&start, (struct timezone*) 0);	/* Check if we need to have two clients going on */	if(two) {		/* Spawn second instances */		tpid = fork();		/* If in parent */		if(tpid) {			/* Close socket */			close(fd);			/* Open a new socket */			fd = socket(AF_IRDA, SOCK_SEQPACKET, 0);			if (fd < 0) {				perror("socket");				exit(-1);			}			/* Connect the new socket */			ret = irdaspray_connect_request(fd);			if (ret) {				return -1;			}		}	}	if (echo) {		/* Fork off transmitter */		pid = fork();				if (pid) {	/* parent */			total = irdaspray_receive(fd);		} else {	/* child */			total = irdaspray_transmit(fd);		}	} else			/* single */		total = irdaspray_transmit(fd);	/* pid==0: single-thread(discard-tx) or child(echo-tx)	 * pid!=0: parent(echo-rx)	 */	gettimeofday(&end, (struct timezone*) 0);	time = (double) (end.tv_sec - start.tv_sec) + (double)		((double) (end.tv_usec - start.tv_usec) / 1000000.0);	if (pid) {	/* parent */		wait(&status);		printf("Received %d bytes in %f seconds (%0.3f kbytes/s)\n",		       total, time, (double) (total / time) / 1024); 	}	else {		/* child or single-thread */		printf("Transmitted %d bytes in %f seconds (%0.3f kbytes/s)\n",		       total, time, (double) (total / time) / 1024);	}	return 0;}/* * Function ir_server () * *    Implements IrDA Echo or Discard server * */int ir_server(void){	struct sockaddr_irda peer, self;	int addrlen;	int actual;	int fd, conn_fd;	int pid = 0;	/* Check personality */	if (echo)		printf("IrDA Echo server starting ...\n");	else		printf("IrDA Discard server starting ...\n");	/* Create socket */	fd = socket(AF_IRDA, SOCK_SEQPACKET, 0);	if (fd < 0) {		perror("socket");		exit(-1);        }	/* Init self */	self.sir_family = AF_IRDA;	if (echo)		strncpy(self.sir_name, "IrECHO", 25);	else		strncpy(self.sir_name, "IrDISCARD", 25);	self.sir_lsap_sel = LSAP_ANY;		if (bind(fd, (struct sockaddr*) &self, sizeof(struct sockaddr_irda))) {		perror("bind");		return -1;	}	/* Test if IR-IAS is happy */#if SETIAS	irias_play(fd);#endif#if DELIAS	irias_remove(fd);#endif	if (listen(fd, 8)) {		perror("listen");		return -1;	}	for (;;) {		addrlen = sizeof(struct sockaddr_irda);		printf("Waiting for connection!\n");		/* collect old server zombies */		while (waitpid(-1, NULL, WNOHANG) > 0)			;		conn_fd = accept(fd, (struct sockaddr *) &peer, &addrlen);		if (conn_fd < 0) {			perror("accept");			return -1;		}		/* Fork off receiver, so that we can accept multiple		 * simultaneous connections */		pid = fork();		/* If in children, receive, in parent, listen */		if(!pid) {			printf("Connected!\n");					do {				actual = recv(conn_fd, &buf, sizeof(buf), 0);				if (actual <= 0) 					break;				printf("Got %d bytes\n", actual);							if (echo) {					actual = send(conn_fd, &buf, actual, 0);					printf("Sent %d bytes\n", actual);				}			} while (actual > 0);			close(conn_fd);			printf("Disconnected!\n");			/* Quit the child */			return(0);		}	}	return 0;}static void usage(char *argv[]){	fprintf(stderr, "usage: %s [-s] [-c] [-d] [-e] [-h] [-b frame-size] [-n frames] \n", argv[0]);	fprintf(stderr, "      -s act as a server\n");	fprintf(stderr, "      -c act as a client (default)\n");	fprintf(stderr, "      -d use discard service for unidirection transfer\n");	fprintf(stderr, "      -e use echo service for bidirection transfer (default)\n");	fprintf(stderr, "      -t open two concurent client sockets\n");	fprintf(stderr, "      -h print this message ;-)\n");	fprintf(stderr, "      -b frame-size in bytes (default 1024, max 8192)\n");	fprintf(stderr, "      -n number of frames (default 100)\n");	exit(1);}/* * Function main (argc, ) * *     * */int main(int argc, char *argv[]){	int c;	while ((c = getopt(argc, argv, "vscdethb:m:n:f:")) != -1) {		switch (c) {			 		case 's':			server = 1; /* Act as a server */ 			break;			 		case 'c':			server = 0; /* Act as a client */ 			break;			 		case 'd': 			echo = 0; /* Use discard service instead of echo */ 			break;			 		case 'e': 			echo = 1; /* Use echo service instead of discard */ 			break;			 		case 't':			two = 1; /* Open two client sockets */ 			break;					case 'h':			usage(argv);			break;					case 'n':			frame_number = atoi(optarg);			break;					case 'b':			frame_size = atoi(optarg);			break;		default:			usage(argv);			break;		}	}	/* Start client or server as needed */	if(server)		return(ir_server());	else		return(ir_client());}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑变态av一区二区三区| 精品视频资源站| 欧美性色综合网| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美综合网| 国产剧情一区二区三区| 欧美性受xxxx| 日韩伦理免费电影| 狠狠网亚洲精品| 欧美日本免费一区二区三区| 国产精品乱码久久久久久| 激情小说亚洲一区| 7777精品伊人久久久大香线蕉 | 在线精品视频免费观看| 国产午夜一区二区三区| 麻豆精品在线看| 欧美日韩国产综合一区二区 | 午夜a成v人精品| www.66久久| 中文字幕高清不卡| 国产成人在线视频播放| 久久久av毛片精品| 久99久精品视频免费观看| av电影天堂一区二区在线观看| 欧美日本高清视频在线观看| 国产精品久久久久影院亚瑟| 蜜桃av一区二区| 欧美视频一二三区| 一区二区三区久久久| 色婷婷香蕉在线一区二区| 综合色天天鬼久久鬼色| 99久久99久久精品免费看蜜桃| 欧美激情中文字幕一区二区| 欧美性极品少妇| 亚洲美女视频在线观看| 99精品欧美一区| 一区二区三区在线观看欧美| 欧美性xxxxx极品少妇| 亚洲国产另类精品专区| 欧美精选一区二区| 久久er精品视频| 欧美激情综合五月色丁香小说| 国产 日韩 欧美大片| 中文字幕一区二区日韩精品绯色| 91原创在线视频| 亚洲v日本v欧美v久久精品| 欧美日韩免费不卡视频一区二区三区| 午夜精品一区二区三区三上悠亚| 欧美另类一区二区三区| 国内国产精品久久| 国产精品久久久久桃色tv| 色综合天天性综合| 午夜精品久久久久久久| 精品国产不卡一区二区三区| 国产成人在线免费观看| 一区二区视频在线看| 91精品国产欧美一区二区18| 国产精品一区二区免费不卡| 亚洲美女少妇撒尿| 欧美成人女星排行榜| 成人免费黄色在线| 亚洲亚洲精品在线观看| 精品久久久久久久久久久久久久久久久 | 欧美一级高清大全免费观看| 国产精品一区二区三区99| 一区二区三区在线看| 精品国产露脸精彩对白 | 国产传媒久久文化传媒| 一区二区三区在线高清| 久久久精品日韩欧美| 欧美影院精品一区| 国产精品99久久久久久似苏梦涵| 一区二区三国产精华液| 久久五月婷婷丁香社区| 色婷婷狠狠综合| 久久国产精品免费| 亚洲第一成人在线| 中文字幕日韩一区| 久久综合av免费| 欧美精选午夜久久久乱码6080| 国产91丝袜在线播放九色| 三级精品在线观看| 亚洲视频免费在线| 久久精品欧美一区二区三区不卡 | 91麻豆国产香蕉久久精品| 久久精品国产免费看久久精品| 亚洲男同性视频| 久久久影视传媒| 精品日本一线二线三线不卡| 欧美一级高清片在线观看| 国产成人精品一区二| 亚洲欧美偷拍另类a∨色屁股| 91精品国产91热久久久做人人 | 日韩电影在线免费| 亚洲欧美日韩系列| 中文字幕不卡的av| 久久精品综合网| 2014亚洲片线观看视频免费| 欧美高清dvd| 欧美吞精做爰啪啪高潮| 色婷婷av一区二区三区软件| 9色porny自拍视频一区二区| 国模冰冰炮一区二区| 久久国产尿小便嘘嘘尿| 国产九九视频一区二区三区| 午夜精品一区在线观看| 亚洲国产综合视频在线观看| 一区二区高清免费观看影视大全| 国产精品国产精品国产专区不蜜| 久久九九99视频| 欧美国产日韩在线观看| 国产精品三级电影| 国产精品久久久久久久久久久免费看| 久久久久国产精品麻豆ai换脸| 精品国产a毛片| 久久久久久久久99精品| 国产视频视频一区| 国产精品色婷婷久久58| 中文字幕亚洲综合久久菠萝蜜| 国产精品久久影院| 一区二区三区在线看| 午夜精品影院在线观看| 毛片基地黄久久久久久天堂| 黄色精品一二区| 成人一区二区三区视频在线观看 | 亚洲丝袜精品丝袜在线| 亚洲欧美日韩电影| 亚洲高清免费一级二级三级| 免费的国产精品| 国产精品1024久久| 波多野结衣精品在线| 色狠狠桃花综合| 91精品免费在线| 久久综合中文字幕| 亚洲蜜臀av乱码久久精品| 午夜影视日本亚洲欧洲精品| 蜜桃av一区二区三区| 高清久久久久久| 欧洲日韩一区二区三区| 精品卡一卡二卡三卡四在线| 国产精品伦理一区二区| 亚洲一区二区av在线| 美女精品自拍一二三四| 大尺度一区二区| 欧美精品三级在线观看| 精品少妇一区二区三区免费观看 | 国产日本欧洲亚洲| 亚洲色图在线视频| 天堂av在线一区| 黄色日韩三级电影| 色婷婷一区二区三区四区| 日韩一区二区三区在线观看| 国产精品免费aⅴ片在线观看| 亚洲国产精品久久艾草纯爱 | 日韩高清不卡一区二区| 国产成人午夜99999| 在线观看免费成人| 国产欧美一区二区三区鸳鸯浴| 亚洲在线一区二区三区| 国产99久久久国产精品潘金 | 极品尤物av久久免费看| 在线免费观看日本欧美| 国产丝袜欧美中文另类| 亚洲h在线观看| 波波电影院一区二区三区| 日韩视频在线永久播放| 亚洲精品免费一二三区| 国产不卡视频在线播放| 欧美大片一区二区三区| 亚洲欧美乱综合| 成人网页在线观看| 26uuu精品一区二区在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 成人欧美一区二区三区1314| 久久99精品视频| 欧美精品日日鲁夜夜添| 一区二区三区资源| 97久久久精品综合88久久| 久久婷婷国产综合精品青草| 日韩国产成人精品| 欧美日韩亚洲不卡| 亚洲一区二区高清| 在线看一区二区| 亚洲欧美激情插| 色综合天天天天做夜夜夜夜做| 中文字幕精品在线不卡| 国产成人综合亚洲91猫咪| 精品日韩在线观看| 欧美aaaaaa午夜精品| 欧美日韩久久一区二区| 亚洲成人午夜影院| 欧美人妇做爰xxxⅹ性高电影| 亚洲人成在线观看一区二区| 成人av网站免费| 中文字幕一区二区三区视频| 成人免费三级在线| 一区精品在线播放| 色婷婷一区二区三区四区| 奇米精品一区二区三区在线观看一| 91在线无精精品入口|