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

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

?? flute.c

?? 這個程序實現了FLUTE協議
?? C
?? 第 1 頁 / 共 4 頁
字號:
	close_alc_session(*s_id);	return -4;      }    }  }  else if(a->alc_a.cc_id == RLC) {        *ch_id = add_alc_channel(*s_id, ports[0], addrs[0], a->alc_a.intface, a->alc_a.intface_name);        if(*ch_id == -1) {            close_alc_session(*s_id);      return -4;	    }  }  if(a->rx_object) {    retval = receiver_in_object_mode(s_id, a);    fdt_th_args->fdt = NULL;  }  else {    memset(filetoken, 0, MAX_PATH);        if(strstr(a->file_path, "*") != NULL) {            if(((a->file_path[0] == '*') && (a->file_path[(strlen(a->file_path) - 1)] == '*'))) {		if(a->file_path[1] == '.') {	  printf("Only *something* or *.something valid values in wild card mode!\n");	  fflush(stdout);	  return -1;	}	memcpy(filetoken, (a->file_path + 1), (strlen(a->file_path) - 2));      }      else if(((a->file_path[0] == '*') && (a->file_path[1] == '.'))) {	memcpy(filetoken, (a->file_path + 1), (strlen(a->file_path) - 1));      }      else {	printf("Only *something* or *.something valid values in wild card mode!\n");	fflush(stdout);	return -1;      }    }        fdt_th_args->fdt = NULL;    fdt_th_args->s_id = *s_id;    fdt_th_args->rx_automatic = a->rx_automatic;    if(strlen(filetoken) != 0) {      fdt_th_args->filetoken = filetoken;    }    else {      fdt_th_args->filetoken = NULL;    }    fdt_th_args->accept_expired_fdt_inst = a->alc_a.accept_expired_fdt_inst;    fdt_th_args->verbosity = a->alc_a.verbosity;        /* Create FDT receiving thread */    #ifdef WIN32	if(_beginthread((void*)fdt_thread, 0, (void*)fdt_th_args) < 0) {          printf("Error: flute_receiver, _beginthread\n");      fflush(stdout);      return -1;                  }#else    if((pthread_create(&fdt_thread_id, NULL, fdt_thread, (void*)fdt_th_args)) != 0) {      printf("Error: flute_receiver, pthread_create\n");      fflush(stdout);      return -1;            }        #endif    if(((a->rx_automatic) || (strstr(a->file_path, "*") != NULL))) {      retval = receiver_in_fdt_based_mode(s_id, a, fdt_th_args);    }    else if(strcmp(a->file_path, "") != 0) {      retval = receiver_in_file_list_mode(s_id, a, fdt_th_args);    }    else {      retval = receiver_in_ui_mode(s_id, a, fdt_th_args);    }  }    return retval;}/* * This function is flute sender's fdt based sending function. * * Params:	int *s_id: Pointer to session identifier, *			int *ch_id: Pointer to channel identifier, *			arguments_t *a: Pointer to arguments structure where command line arguments are parsed. * * * Return:	int: Different values (0, -1, -2) depending on how function ends. * */int sender_in_fdt_based_mode(int *s_id, int *ch_id, arguments_t *a) {  /* NEW STDOUT MODE */  sender_output_th_args_t sender_output_th_args;#ifndef WIN32  pthread_t sender_output_thread_id;#endif    int retval = 0;  int retcode = 0;    alc_session_t *s;    time_t systime;  bool is_printed = false;  #ifdef WIN32  ULONGLONG curr_time;#else  unsigned long long curr_time;#endif  struct stat fdt_file_stats;  FILE *fp;  fdt_t *fdt;  char *buf = NULL;#ifdef WIN32  ULONGLONG fdt_length = 0;  LONGLONG nbytes = 0;#else  unsigned long long fdt_length = 0;  long long nbytes = 0;#endif  if(stat(a->fdt_file, &fdt_file_stats) == -1) {    printf("Error: %s is not valid file name\n", a->fdt_file);    fflush(stdout);    return -1;  }  fdt_length = fdt_file_stats.st_size;  /* Allocate memory for buf, to read fdt file to it */  if(!(buf = (char*)calloc((unsigned int)(fdt_length + 1), sizeof(char)))) {    printf("Could not alloc memory for fdt buffer!\n");    return -1;  }  if((fp = fopen(a->fdt_file, "rb")) == NULL) {    printf("Error: unable to open FDT file %s\n", a->fdt_file);    fflush(stdout);    free(buf);    return -1;  }  nbytes = fread(buf, 1, (unsigned int)fdt_length, fp);  if(nbytes <= 0) {    printf("fread error\n");    fflush(stdout);    fclose(fp);    free(buf);    return -1;  }  fdt = decode_fdt_payload(buf);  free(buf);  fclose(fp);  if(fdt == NULL) {    return -1;  }  time(&systime);  curr_time = systime + 2208988800U;  if(fdt->expires < curr_time) {    set_session_state(*s_id, SExiting);    FreeFDT(fdt);    return -2;  }  s = get_alc_session(*s_id);  if(((a->alc_a.cc_id == RLC) || ((a->alc_a.cc_id == Null) && (a->alc_a.nb_channel != 1)))) {        /**** Start tx_thread ****/    #ifdef WIN32	if(_beginthread((void*)tx_thread, 0, (void*)s) < 0) {      perror("open_alc_session: _beginthread");      FreeFDT(fdt);      return -1;    }	#else    if (pthread_create(&s->tx_thread_id, NULL, tx_thread, (void*)s) != 0) {      perror("open_alc_session: pthread_create");      FreeFDT(fdt);      return -1;    }#endif      }    if(a->alc_a.start_time != 0) {    while(1) {            time(&systime);      curr_time = systime + 2208988800U;            if(a->alc_a.start_time > curr_time) {		if(!is_printed) {	  printf("Waiting for session start time...\n");	  fflush(stdout);	  is_printed = true;	}	#ifdef WIN32	Sleep(1000);#else	sleep(1);#endif      }      else {	break;      }            if(s->state == SExiting) {	FreeFDT(fdt);	return -2;      }    }  }  /* NEW STDOUT MODE */  if(a->alc_a.verbosity < 0) {    sender_output_th_args.s_id = *s_id;    sender_output_th_args.fdt = fdt;#ifdef WIN32	if(_beginthread((void*)sender_output_thread, 0, (void*)&sender_output_th_args) < 0) {      printf("Error: fdtbasedsend, _beginhread\n");      fflush(stdout);      return -1;    }#else    if((pthread_create(&sender_output_thread_id, NULL, sender_output_thread, (void*)&sender_output_th_args)) != 0) {      printf("Error: fdtbasedsend, pthread_create\n");      fflush(stdout);      return -1;    }#endif  }  while(a->alc_a.nb_tx) {        if(a->alc_a.cc_id == Null) {            if(a->alc_a.nb_channel == 1) {		  		  retcode = fdtbasedsend(fdt, s_id, ch_id, a);      }      else {	retcode = fdtbasedsend(fdt, s_id, NULL, a);      }    }    else if(a->alc_a.cc_id == RLC) {      retcode = fdtbasedsend(fdt, s_id, NULL, a);    }        if(retcode == -1) {      printf("\nError: fdtbasedsend() failed\n");      retval = -1;      break;    }    else if(retcode == -2) {      retval = -2;      break;    }    if(!a->cont) {      a->alc_a.nb_tx--;    }        if(((a->alc_a.cc_id == RLC) || ((a->alc_a.cc_id == Null) && (a->alc_a.nb_channel != 1)))) {            while(s->tx_queue_begin != NULL) {		if(s->state == SExiting) {#ifdef USE_ZLIB	  if(a->alc_a.encode_content == ZLIB_FDT_AND_GZIP_FILES) {	    remove_gz_files(a->fdt_file, a->alc_a.base_dir, a->file_path);	  }#endif	  FreeFDT(fdt);	  return -2;	}#ifdef WIN32	Sleep(1);#else	usleep(1000);#endif			      }    }  } #ifdef USE_ZLIB  if(a->alc_a.encode_content == ZLIB_FDT_AND_GZIP_FILES) {    remove_gz_files(a->fdt_file, a->alc_a.base_dir, a->file_path);  }#endif    set_session_state(*s_id, SExiting);  if(a->alc_a.verbosity < 0) {#ifdef WIN32    Sleep(1000);#else    sleep(1);#endif  }  FreeFDT(fdt);  return retval;} /* * This function is flute receiver's fdt based receiving function. * * Params:	int *s_id: Pointer to session identifier, *			arguments_t *a: Pointer to arguments structure where command line arguments are parsed, *			fdt_th_args_t *fdt_th_args: Pointer to structure conmtaining FDT and some other information. * * Return:	int: Different values (0, -1, -2, -3) depending on how function ends. * */int receiver_in_fdt_based_mode(int *s_id, arguments_t *a, fdt_th_args_t *fdt_th_args) {  int retval = 0;  int retcode = 0;  char *cont_desc = NULL;#ifndef WIN32  pthread_t receiver_output_thread_id;#endif  if(strcmp(a->sdp_file, "") != 0) {    cont_desc = sdp_attr_get(a->sdp, "content-desc");  }  if(a->rx_automatic) {    printf("FLUTE Receiver in automatic mode\n");  }  else {    printf("FLUTE Receiver in wild card mode\n");  }    if(cont_desc != NULL) {    printf("Session content information available at:\n");    printf("%s\n", cont_desc);  }    fflush(stdout);    if(a->alc_a.verbosity < 0) {#ifdef WIN32	if(_beginthread((void*)receiver_output_thread, 0, (void*)fdt_th_args) < 0) {           printf("Error: flute_receiver, _beginthread\n");      fflush(stdout);      return -1;                  }#else    if((pthread_create(&receiver_output_thread_id, NULL, receiver_output_thread, (void*)fdt_th_args)) != 0) {      printf("Error: flute_receiver, pthread_create\n");      fflush(stdout);      return -1;    }#endif  }      while(fdt_th_args->fdt == NULL) {        if(get_session_state(*s_id) == SExiting) {      return -2;    }    else if(get_session_state(*s_id) == STxStopped) {      return -3;    }    #ifdef WIN32    Sleep(1);#else    usleep(1000);#endif    continue;  }    retcode = fdtbasedrecv(fdt_th_args->fdt, *s_id, a->alc_a.rx_memory_mode, a->alc_a.accept_expired_fdt_inst,			 fdt_th_args->filetoken,#ifdef WIN32			 a->open_file,#else 			 0,#endif			 a->alc_a.verbosity);    if(retcode == -1) {    printf("Error: fdtbasedrecv() failed\n");    fflush(stdout);    retval = -1;  }  else if(retcode == -2) {    retval = -2;  }  else if(retcode == -3) {    retval = -3;  }    return retval;}/* * This function is flute receiver's fdt based ui mode receiving function. * * Params:	int *s_id: Pointer to session identifier, *			arguments_t *a: Pointer to arguments structure where command line arguments are parsed, *			fdt_th_args_t *fdt_th_args: Pointer to structure conmtaining FDT and some other information. * * Return:	int: Different values (0, -1, -2, -3) depending on how function ends. * */int receiver_in_ui_mode(int *s_id, arguments_t *a, fdt_th_args_t *fdt_th_args) {		file_t *file;	char input[100];#ifdef WIN32	ULONGLONG rec_toi;#else	unsigned long long rec_toi;#endif	char command;	bool valid_toi = false;	bool expired_toi = false;	char *filepath = NULL;	uri_t *uri = NULL;	int retval = 0;	int retcode = 0;	int content_enc_algo = -1;	time_t systime;#ifdef WIN32	ULONGLONG curr_time;#else	unsigned long long curr_time;#endif	char *cont_desc = NULL;	if(strcmp(a->sdp_file, "") != 0) {	  cont_desc = sdp_attr_get(a->sdp, "content-desc");	}	printf("FLUTE Receiver in UI-mode\n");	if(cont_desc != NULL) {		printf("Session content information available at:\n");		printf("%s\n", cont_desc);	}	fflush(stdout);	while(fdt_th_args->fdt == NULL) {		if(get_session_state(*s_id) == SExiting) {			return -2;		}		else if(get_session_state(*s_id) == STxStopped) {			return -3;		}#ifdef WIN32		Sleep(1);#else		usleep(1000);#endif		continue;	}	while(1) {		if(get_session_state(*s_id) == SExiting) {						return -2;		}		else if(get_session_state(*s_id) == STxStopped) {			return -3;		}			printf(">> Command: (D)ownload file (Q)uit\n");		printf("-> ");		if(fgets(input, 100, stdin) != NULL) {			if(sscanf(input, "%c", &command) != EOF) {				command = tolower(command);											if(command == 'd') {					printf("Files to download:\n");					fflush(stdout);										file = fdt_th_args->fdt->file_list;					while(file != NULL) {#ifdef WIN32						printf("\t%I64u) %s\n", file->toi, file->location);#else						printf("\t%llu) %s\n", file->toi, file->location);#endif						fflush(stdout);						file = file->next;					}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人高清av在线| 国产三级一区二区| 91在线国产福利| 国产精品亚洲人在线观看| 午夜精品久久久久影视| 亚洲国产视频直播| 水野朝阳av一区二区三区| 亚洲电影激情视频网站| 一区二区三区免费观看| 亚洲欧美日韩一区| 一区二区欧美视频| 亚洲1区2区3区视频| 夜色激情一区二区| 亚洲成av人片在线观看无码| 亚洲欧美二区三区| 亚洲福利一区二区| 久久国内精品视频| 极品销魂美女一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 国产真实精品久久二三区| 国产精品18久久久久久久久久久久| 狠狠久久亚洲欧美| 91视频xxxx| 555www色欧美视频| 久久久美女艺术照精彩视频福利播放| 国产午夜精品理论片a级大结局| 国产精品你懂的在线欣赏| 亚洲免费在线观看| 蜜桃视频在线观看一区二区| 国产在线日韩欧美| 91麻豆高清视频| 日韩一区二区在线观看| 久久精品欧美一区二区三区麻豆| 亚洲人妖av一区二区| 亚洲国产一二三| 国产福利精品导航| 欧美日韩一卡二卡三卡| 精品国产乱码久久久久久久久| 国产精品天美传媒| 日韩 欧美一区二区三区| 国模大尺度一区二区三区| 在线免费不卡视频| 日韩欧美一区二区久久婷婷| 国产精品福利一区二区三区| 免费的国产精品| 日本韩国欧美一区| 中文字幕国产精品一区二区| 免费看欧美美女黄的网站| 91在线视频官网| 久久精品欧美日韩精品| 美女在线一区二区| 欧美久久免费观看| 亚洲精选视频在线| 成人福利视频在线看| 久久夜色精品一区| 蜜臀久久99精品久久久久宅男| 在线观看网站黄不卡| 国产精品乱人伦一区二区| 国产在线视频不卡二| 日韩精品一区二区三区蜜臀 | 欧美成人精品3d动漫h| 精品国产乱码久久久久久闺蜜 | 午夜视黄欧洲亚洲| 亚洲在线视频一区| 午夜精品免费在线| 丁香天五香天堂综合| 91福利社在线观看| 欧美一区二区三区的| 中文字幕巨乱亚洲| 日韩成人午夜精品| 成人精品高清在线| 日韩你懂的在线播放| 中文字幕一区二区三区蜜月 | 夜夜操天天操亚洲| 精品一二三四在线| 欧美性videosxxxxx| 日本高清不卡aⅴ免费网站| 日韩免费视频一区| 亚洲一区免费在线观看| 国产精品1区2区| 日韩久久久精品| 亚洲免费大片在线观看| 日韩精彩视频在线观看| 99久久精品情趣| 久久综合色天天久久综合图片| 国产精品福利一区| 国产精品综合二区| 色先锋资源久久综合| 久久久久久麻豆| 免费国产亚洲视频| 色婷婷国产精品综合在线观看| 久久五月婷婷丁香社区| 亚洲一区二区三区小说| 粉嫩av一区二区三区粉嫩| 日韩一级二级三级精品视频| 亚洲综合一区二区三区| 大桥未久av一区二区三区中文| 精品国产一二三区| 久久久久99精品一区| 亚洲午夜视频在线| 国产精品69毛片高清亚洲| 成人性生交大片免费看中文| 国产99久久久国产精品潘金| 99精品黄色片免费大全| 欧美xxxxx裸体时装秀| 午夜精品久久久久久久蜜桃app| 99久久免费视频.com| 国产精品久久久久久久久免费樱桃| 久久狠狠亚洲综合| 欧美一级二级三级蜜桃| 免费观看日韩av| 精品三级在线看| 日本不卡视频在线| 欧美成人性福生活免费看| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美日韩一二三区| 一区二区三区四区五区视频在线观看| 99国产精品视频免费观看| 欧美激情中文字幕| 色综合久久综合| 亚洲欧洲av在线| 91在线视频播放| 一区二区三区中文字幕精品精品| 成人h动漫精品一区二区| 欧美国产视频在线| 国产一区二区免费视频| 欧美成人aa大片| 国产一区视频导航| 国产精品国产三级国产aⅴ无密码| 紧缚奴在线一区二区三区| 久久精品视频免费观看| 成人aa视频在线观看| 一区二区三区在线观看欧美| 欧美日韩一区二区不卡| 人禽交欧美网站| 久久婷婷国产综合国色天香 | 国产精品国产三级国产a | 成人欧美一区二区三区白人| 国内精品在线播放| www国产成人免费观看视频 深夜成人网| 日本欧美在线观看| 日韩视频一区二区三区在线播放| 九色|91porny| 欧美激情一区不卡| 日韩一区二区三区视频在线观看| 丰满放荡岳乱妇91ww| 夜夜亚洲天天久久| 日韩一区二区三区视频在线| 国产高清精品在线| 婷婷成人激情在线网| 欧美精品乱码久久久久久| 国产suv一区二区三区88区| 亚洲精品大片www| 91视频一区二区三区| 日本强好片久久久久久aaa| 国产日韩三级在线| 91精品国产高清一区二区三区 | 精品国产一区a| 在线观看视频一区二区| 国产精品一区二区视频| 午夜免费欧美电影| 国产精品网站导航| 欧美美女直播网站| 91在线观看一区二区| 国产精品资源在线看| 亚洲精品中文字幕在线观看| 国产精品免费视频网站| 日韩一区二区在线看| 国产综合一区二区| 国产专区综合网| 青青草91视频| 午夜欧美在线一二页| 亚洲欧美日韩国产中文在线| 久久久国产一区二区三区四区小说 | 日韩国产精品久久久| 国产精品毛片高清在线完整版| 精品国产露脸精彩对白| 欧美最猛性xxxxx直播| 大陆成人av片| 成人a级免费电影| 国产成人在线观看| 日本亚洲天堂网| 一个色在线综合| 一级做a爱片久久| 亚洲综合激情另类小说区| 国产精品久久久久aaaa樱花 | 国产亚洲午夜高清国产拍精品| 欧美视频一区二区三区在线观看| av一区二区久久| 99天天综合性| 成人不卡免费av| 色综合中文字幕国产 | 国产精品久久久久婷婷| 欧美日韩国产影片| 91丝袜美腿高跟国产极品老师| av综合在线播放| 91精彩视频在线观看| 欧美性受极品xxxx喷水| 欧美性生活大片视频| 777xxx欧美|