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

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

?? scotest.c

?? 基于LINUX內(nèi)核驅(qū)動(dòng)的開(kāi)發(fā)
?? C
字號(hào):
/* * *  BlueZ - Bluetooth protocol stack for Linux * *  Copyright (C) 2002-2003  Maxim Krasnyansky <maxk@qualcomm.com> *  Copyright (C) 2002-2008  Marcel Holtmann <marcel@holtmann.org> * * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA * */#ifdef HAVE_CONFIG_H#include <config.h>#endif#include <stdio.h>#include <errno.h>#include <ctype.h>#include <unistd.h>#include <stdlib.h>#include <getopt.h>#include <syslog.h>#include <signal.h>#include <sys/time.h>#include <sys/socket.h>#include <bluetooth/bluetooth.h>#include <bluetooth/sco.h>/* Test modes */enum {	SEND,	RECV,	RECONNECT,	MULTY,	DUMP,	CONNECT};static unsigned char *buf;/* Default data size */static long data_size = 672;static bdaddr_t bdaddr;static float tv2fl(struct timeval tv){	return (float)tv.tv_sec + (float)(tv.tv_usec/1000000.0);}static int do_connect(char *svr){	struct sockaddr_sco addr;	struct sco_conninfo conn;	socklen_t optlen;	int sk;	/* Create socket */	sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO);	if (sk < 0) {		syslog(LOG_ERR, "Can't create socket: %s (%d)",							strerror(errno), errno);		return -1;	}	/* Bind to local address */	memset(&addr, 0, sizeof(addr));	addr.sco_family = AF_BLUETOOTH;	bacpy(&addr.sco_bdaddr, &bdaddr);	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {		syslog(LOG_ERR, "Can't bind socket: %s (%d)",							strerror(errno), errno);		goto error;	}	/* Connect to remote device */	memset(&addr, 0, sizeof(addr));	addr.sco_family = AF_BLUETOOTH;	str2ba(svr, &addr.sco_bdaddr);	if (connect(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {		syslog(LOG_ERR, "Can't connect: %s (%d)",							strerror(errno), errno);		goto error;	}	/* Get connection information */	memset(&conn, 0, sizeof(conn));	optlen = sizeof(conn);	if (getsockopt(sk, SOL_SCO, SCO_CONNINFO, &conn, &optlen) < 0) {		syslog(LOG_ERR, "Can't get SCO connection information: %s (%d)",							strerror(errno), errno);		goto error;	}	syslog(LOG_INFO, "Connected [handle %d, class 0x%02x%02x%02x]",		conn.hci_handle,		conn.dev_class[2], conn.dev_class[1], conn.dev_class[0]);	return sk;error:	close(sk);	return -1;}static void do_listen(void (*handler)(int sk)){	struct sockaddr_sco addr;	struct sco_conninfo conn;	socklen_t optlen;	int sk, nsk;	char ba[18];	/* Create socket */	sk = socket(PF_BLUETOOTH, SOCK_SEQPACKET, BTPROTO_SCO);	if (sk < 0) {		syslog(LOG_ERR, "Can't create socket: %s (%d)",							strerror(errno), errno);		exit(1);	}	/* Bind to local address */	memset(&addr, 0, sizeof(addr));	addr.sco_family = AF_BLUETOOTH;	bacpy(&addr.sco_bdaddr, &bdaddr);	if (bind(sk, (struct sockaddr *) &addr, sizeof(addr)) < 0) {		syslog(LOG_ERR, "Can't bind socket: %s (%d)",							strerror(errno), errno);		goto error;	}	/* Listen for connections */	if (listen(sk, 10)) {		syslog(LOG_ERR,"Can not listen on the socket: %s (%d)",							strerror(errno), errno);		goto error;	}	syslog(LOG_INFO,"Waiting for connection ...");	while (1) {		memset(&addr, 0, sizeof(addr));		optlen = sizeof(addr);		nsk = accept(sk, (struct sockaddr *) &addr, &optlen);		if (nsk < 0) {			syslog(LOG_ERR,"Accept failed: %s (%d)",							strerror(errno), errno);			goto error;		}		if (fork()) {			/* Parent */			close(nsk);			continue;		}		/* Child */		close(sk);		/* Get connection information */		memset(&conn, 0, sizeof(conn));		optlen = sizeof(conn);		if (getsockopt(nsk, SOL_SCO, SCO_CONNINFO, &conn, &optlen) < 0) {			syslog(LOG_ERR, "Can't get SCO connection information: %s (%d)",							strerror(errno), errno);			close(nsk);			goto error;		}		ba2str(&addr.sco_bdaddr, ba);		syslog(LOG_INFO, "Connect from %s [handle %d, class 0x%02x%02x%02x]",			ba, conn.hci_handle,			conn.dev_class[2], conn.dev_class[1], conn.dev_class[0]);		handler(nsk);		syslog(LOG_INFO, "Disconnect");		exit(0);	}	return;error:	close(sk);	exit(1);}static void dump_mode(int sk){	int len;	syslog(LOG_INFO,"Receiving ...");	while ((len = read(sk, buf, data_size)) > 0)		syslog(LOG_INFO, "Recevied %d bytes", len);}static void recv_mode(int sk){	struct timeval tv_beg,tv_end,tv_diff;	long total;	uint32_t seq;	syslog(LOG_INFO, "Receiving ...");	seq = 0;	while (1) {		gettimeofday(&tv_beg, NULL);		total = 0;		while (total < data_size) {			int r;			if ((r = recv(sk, buf, data_size, 0)) <= 0) {				if (r < 0)					syslog(LOG_ERR, "Read failed: %s (%d)",							strerror(errno), errno);				return;				}			total += r;		}		gettimeofday(&tv_end, NULL);		timersub(&tv_end, &tv_beg, &tv_diff);		syslog(LOG_INFO,"%ld bytes in %.2fm speed %.2f kb", total,			tv2fl(tv_diff) / 60.0,			(float)( total / tv2fl(tv_diff) ) / 1024.0 );	}}static void send_mode(char *svr){	struct sco_options so;	socklen_t len;	uint32_t seq;	int i, sk;	if ((sk = do_connect(svr)) < 0) {		syslog(LOG_ERR, "Can't connect to the server: %s (%d)",							strerror(errno), errno);		exit(1);	}	len = sizeof(so);	if (getsockopt(sk, SOL_SCO, SCO_OPTIONS, &so, &len) < 0) {		syslog(LOG_ERR, "Can't get SCO options: %s (%d)",							strerror(errno), errno);		exit(1);	}	syslog(LOG_INFO,"Sending ...");	for (i = 6; i < so.mtu; i++)		buf[i] = 0x7f;	seq = 0;	while (1) {		*(uint32_t *) buf = htobl(seq);		*(uint16_t *) (buf + 4) = htobs(data_size);		seq++;		if (send(sk, buf, so.mtu, 0) <= 0) {			syslog(LOG_ERR, "Send failed: %s (%d)",							strerror(errno), errno);			exit(1);		}		usleep(1);	}}static void reconnect_mode(char *svr){	while (1) {		int sk;		if ((sk = do_connect(svr)) < 0) {			syslog(LOG_ERR, "Can't connect to the server: %s (%d)",							strerror(errno), errno);			exit(1);		}		close(sk);		sleep(5);	}}static void multy_connect_mode(char *svr){	while (1) {		int i, sk;		for (i = 0; i < 10; i++){			if (fork())				continue;			/* Child */			sk = do_connect(svr);			if (sk < 0) {				syslog(LOG_ERR, "Can't connect to the server: %s (%d)",							strerror(errno), errno);			}			close(sk);			exit(0);		}		sleep(19);	}}static void usage(void){	printf("scotest - SCO testing\n"		"Usage:\n");	printf("\tscotest <mode> [-b bytes] [bd_addr]\n");	printf("Modes:\n"		"\t-d dump (server)\n"		"\t-c reconnect (client)\n"		"\t-m multiple connects (client)\n"		"\t-r receive (server)\n"		"\t-s connect and send (client)\n"		"\t-n connect and be silent (client)\n");}int main(int argc ,char *argv[]){	struct sigaction sa;	int opt, sk, mode = RECV;	while ((opt=getopt(argc,argv,"rdscmnb:")) != EOF) {		switch(opt) {		case 'r':			mode = RECV;			break;		case 's':			mode = SEND;			break;		case 'd':			mode = DUMP;			break;		case 'c':			mode = RECONNECT;			break;		case 'm':			mode = MULTY;			break;		case 'n':			mode = CONNECT;			break;		case 'b':			data_size = atoi(optarg);			break;		default:			usage();			exit(1);		}	}	if (!(argc - optind) && (mode != RECV && mode != DUMP)) {		usage();		exit(1);	}	if (!(buf = malloc(data_size))) {		perror("Can't allocate data buffer");		exit(1);	}	memset(&sa, 0, sizeof(sa));	sa.sa_handler = SIG_IGN;	sa.sa_flags   = SA_NOCLDSTOP;	sigaction(SIGCHLD, &sa, NULL);	openlog("scotest", LOG_PERROR | LOG_PID, LOG_LOCAL0);	switch( mode ){		case RECV:			do_listen(recv_mode);			break;		case DUMP:			do_listen(dump_mode);			break;		case SEND:			send_mode(argv[optind]);			break;		case RECONNECT:			reconnect_mode(argv[optind]);			break;		case MULTY:			multy_connect_mode(argv[optind]);			break;		case CONNECT:			sk = do_connect(argv[optind]);			if (sk < 0)				exit(1);			dump_mode(sk);			break;	}	syslog(LOG_INFO, "Exit");	closelog();	return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合网| 欧美日韩国产一二三| 成人免费一区二区三区在线观看 | 蜜臂av日日欢夜夜爽一区| 日韩欧美一区电影| 狠狠色2019综合网| 国产精品天干天干在观线| 91色九色蝌蚪| 午夜视频久久久久久| 欧美va日韩va| 成人av资源站| 亚洲一区二区影院| 日韩一级精品视频在线观看| 国产乱人伦精品一区二区在线观看| 中文字幕不卡在线播放| 91精品1区2区| 奇米综合一区二区三区精品视频| 2020国产精品久久精品美国| av不卡在线播放| 午夜一区二区三区视频| 精品国产乱码久久久久久久| av一二三不卡影片| 日韩精品久久久久久| 久久蜜桃av一区精品变态类天堂| 91麻豆6部合集magnet| 日韩精品久久理论片| 欧美激情艳妇裸体舞| 欧美视频精品在线观看| 狠狠色丁香久久婷婷综合_中 | 另类中文字幕网| 久久精品夜色噜噜亚洲a∨| 91视频观看免费| 日韩国产欧美视频| 国产精品美女视频| 4438x成人网最大色成网站| 国产91精品露脸国语对白| 午夜精品福利在线| 国产欧美精品一区| 欧美精品久久一区二区三区| 国产jizzjizz一区二区| 五月激情六月综合| 国产精品久久久久影院亚瑟| 欧美一级片在线观看| 成人av电影在线网| 日本大胆欧美人术艺术动态| 国产精品国产三级国产| 日韩小视频在线观看专区| 91免费版在线看| 国产一区亚洲一区| 亚州成人在线电影| 国产精品伦理在线| 欧美变态口味重另类| 欧美中文一区二区三区| 高清国产一区二区| 免费黄网站欧美| 亚洲自拍偷拍av| 国产亚洲欧美在线| 日韩欧美久久久| 欧美性猛交一区二区三区精品| 国产麻豆一精品一av一免费| 天天免费综合色| 最新欧美精品一区二区三区| www国产精品av| 欧美日本在线视频| 91丨porny丨在线| 国产一区二区精品久久99| 三级不卡在线观看| 亚洲精品高清视频在线观看| 国产精品美女一区二区在线观看| 精品国产乱码久久久久久久久| 欧美日韩www| 91国模大尺度私拍在线视频| 成人涩涩免费视频| 国产精品白丝jk白祙喷水网站 | 国产美女一区二区三区| 爽好久久久欧美精品| 樱花影视一区二区| 中文字幕亚洲一区二区av在线| 久久噜噜亚洲综合| 精品国产凹凸成av人网站| 7799精品视频| 欧美日韩国产精品自在自线| 91丨porny丨在线| 成人午夜激情片| 国产精品伊人色| 国产一区二区在线看| 六月丁香综合在线视频| 日韩综合小视频| 午夜影视日本亚洲欧洲精品| 一区二区三区加勒比av| 亚洲另类色综合网站| 亚洲手机成人高清视频| 国产精品国产三级国产普通话三级 | 国产精品污网站| 国产日韩欧美制服另类| 久久久久久99精品| 久久久青草青青国产亚洲免观| 精品日韩成人av| 2021国产精品久久精品| 久久天天做天天爱综合色| 久久久电影一区二区三区| 久久综合九色欧美综合狠狠| 久久久午夜电影| 国产日产精品一区| 国产精品美女www爽爽爽| 国产精品灌醉下药二区| 亚洲四区在线观看| 亚洲另类在线视频| 亚洲福中文字幕伊人影院| 婷婷亚洲久悠悠色悠在线播放| 五月综合激情日本mⅴ| 日韩国产一二三区| 美女视频网站久久| 国产麻豆视频精品| 国产不卡视频一区| 91小视频免费看| 欧美日韩在线播放三区四区| 欧美日韩一区中文字幕| 91精品啪在线观看国产60岁| 欧美不卡123| 欧美极品另类videosde| 成人欧美一区二区三区在线播放| 亚洲美女区一区| 婷婷开心久久网| 久久狠狠亚洲综合| 国产成人av电影在线| 99久久精品国产麻豆演员表| 欧美在线你懂的| 欧美一区二区三区白人| 久久日韩粉嫩一区二区三区| 国产精品久久久久四虎| 一级做a爱片久久| 秋霞电影网一区二区| 国产一区日韩二区欧美三区| 成人黄色av电影| 欧美亚日韩国产aⅴ精品中极品| 欧美乱熟臀69xxxxxx| 精品乱人伦一区二区三区| 中文字幕精品一区二区三区精品| 亚洲欧美色图小说| 日韩精品五月天| 国产成都精品91一区二区三| 91美女视频网站| 91精品国产一区二区三区蜜臀| 欧美精品一区二区三区蜜臀| 中文字幕人成不卡一区| 肉丝袜脚交视频一区二区| 国产高清在线观看免费不卡| 在线看日韩精品电影| 日韩精品中文字幕一区二区三区 | 欧美在线一区二区| 精品少妇一区二区三区日产乱码 | 色嗨嗨av一区二区三区| 91精品国产一区二区| 国产无一区二区| 亚洲午夜精品在线| 国产精品一区一区三区| 在线亚洲+欧美+日本专区| 日韩欧美二区三区| 亚洲视频 欧洲视频| 午夜精品一区二区三区免费视频| 国产美女在线观看一区| 欧美综合久久久| 国产精品乱人伦中文| 欧美视频第二页| 日韩影院在线观看| 91精品欧美一区二区三区综合在 | 国产一区二区三区免费观看| 亚洲免费观看高清在线观看| 久久免费视频色| 色哟哟一区二区在线观看| 国产精品白丝jk黑袜喷水| 色综合婷婷久久| 亚洲欧洲三级电影| 色天使久久综合网天天| 丁香天五香天堂综合| 亚洲欧美日韩小说| 久久精品网站免费观看| a在线欧美一区| 亚洲男人的天堂网| 中文字幕免费不卡| 91丝袜美腿高跟国产极品老师 | 99re热这里只有精品视频| 亚洲欧美国产77777| 国内精品免费在线观看| 欧美性色综合网| 欧美日精品一区视频| 国产免费久久精品| 久久国产精品99精品国产| 欧美—级在线免费片| 国产一区二区三区精品视频| 制服丝袜一区二区三区| 高清不卡在线观看| 亚洲电影一区二区三区| 中文字幕欧美激情一区| 麻豆精品新av中文字幕| 日本伊人精品一区二区三区观看方式| 91社区在线播放| 久久精品国产久精国产爱| 在线电影院国产精品|