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

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

?? flute.c

?? 這個程序?qū)崿F(xiàn)了FLUTE協(xié)議
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* $Author: peltotas $ $Date: 2006/03/16 13:45:54 $ $Revision: 1.19 $ *//* *   MAD-FLUTELIB: Implementation of FLUTE protocol. *   Copyright (c) 2003-2006 TUT - Tampere University of Technology *   main authors/contacts: jani.peltotalo@tut.fi and sami.peltotalo@tut.fi * *   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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "flute_inc.h"/**** Private functions ****/int all_files_received(char *filetable[10], int file_nb);void file_received(char *filetable[10], int file_nb, char *filepath);/* * This function is flute sender's main function. * * Params:	arguments_t *a: Pointer to arguments structure where command line arguments are parsed, *			int *s_id: Pointer to session identifier, *			int *ch_id: Pointer to channel identifier. * * Return:	int: Different values (0, -1, -2, -4) depending on how function ends. * */int flute_sender(arguments_t *a, int *s_id, int *ch_id) {  unsigned short i;  int j, k, l, m;  int retval = 0;  int retcode = 0;    struct sockaddr_in ipv4;  unsigned long addr_nb;  int port_nb;  unsigned short ipv6addr[8];  int nb_ipv6_part;  int dup_sep = 0;  char tmp[5];    char addrs[MAX_CHANNELS_IN_SESSION][MAX_LENGTH];	/* Mcast addresses on which to send */  char ports[MAX_CHANNELS_IN_SESSION][MAX_LENGTH];	/* Local port numbers  */    time_t systime;  #ifdef WIN32  ULONGLONG curr_time;#else  unsigned long long curr_time;#endif  char *sdp_buf = NULL;  FILE *sdp_fp;  struct stat sdp_file_stats;  int nbytes;  if(strcmp(a->sdp_file, "") != 0) {		if(stat(a->sdp_file, &sdp_file_stats) == -1) {			printf("Error: %s is not valid file name\n", a->sdp_file);			fflush(stdout);			return -1;		}			/* Allocate memory for buf */		if(!(sdp_buf = (char*)calloc((sdp_file_stats.st_size + 1), sizeof(char)))) {			printf("Could not alloc memory for sdp buffer!\n");			fflush(stdout);			return -1;		}		if((sdp_fp = fopen(a->sdp_file, "rb")) == NULL) {			printf("Error: unable to open sdp_file %s\n", a->sdp_file);			fflush(stdout);			free(sdp_buf);			return -1;		}		nbytes = fread(sdp_buf, 1, sdp_file_stats.st_size, sdp_fp); 		if(parse_sdp_file(a, addrs, ports, sdp_buf) == -1) {			return -1;		}	}	else {		if(a->alc_a.addr_family == PF_INET) { 			addr_nb = ntohl(inet_addr(a->alc_a.addr));			port_nb = atoi(a->alc_a.port);			for(j = 0; j < a->alc_a.nb_channel; j++) {				ipv4.sin_addr.s_addr = htonl(addr_nb);				memset(addrs[j], 0, MAX_LENGTH);				memset(ports[j], 0, MAX_LENGTH);				sprintf(addrs[j], "%s", inet_ntoa(ipv4.sin_addr));				sprintf(ports[j], "%i", port_nb);				addr_nb++;				port_nb++;			}		}		else if(a->alc_a.addr_family == PF_INET6) {						port_nb = atoi(a->alc_a.port);			retcode = ushort_ipv6addr(a->alc_a.addr, &ipv6addr[0], &nb_ipv6_part);			if(retcode == -1) {				return -1;							}			for(j = 0; j < a->alc_a.nb_channel; j++) {				memset(addrs[j], 0, MAX_LENGTH);				memset(ports[j], 0, MAX_LENGTH);				dup_sep = 0;				for(k = 0; k < nb_ipv6_part + 1; k++) {					memset(tmp, 0, 5);					if(ipv6addr[k] != 0) {						sprintf(tmp, "%x", ipv6addr[k]);						strcat(addrs[j], tmp);					}					else {						if(dup_sep == 0) {							dup_sep = 1;						}						else {							printf("Invalid IPv6 address!\n");							fflush(stdout);							return -1;							}						}					if(k != nb_ipv6_part) {						strcat(addrs[j], ":");					}				}				sprintf(ports[j], "%i", port_nb);				port_nb++;				if(j != a->alc_a.nb_channel - 1) {					for(l = nb_ipv6_part;; l--) {						if(l == 0) {							printf("Only %i channel possible!\n", (j + 1));							fflush(stdout);							return -1;							}						if(ipv6addr[l] + 1 > 0xFFFF) {							continue;						}													if(ipv6addr[l] == 0) {							if(nb_ipv6_part == 7) {								ipv6addr[l]++;								break;							}							for(m = nb_ipv6_part; m > l; m--) {								ipv6addr[m + 1] = ipv6addr[m];								}							ipv6addr[l + 1] = 1;							nb_ipv6_part++;							break;						}						else {							ipv6addr[l]++;							break;						}					}				}			}		}	}	if(a->alc_a.stop_time != 0) {		time(&systime);		curr_time = systime + 2208988800U;		if(a->alc_a.stop_time <= curr_time) {			printf("Session end time reached\n");			fflush(stdout);			return -1;		}	}	*s_id = open_alc_session(&a->alc_a);	for(i = 0; (int)i < a->alc_a.nb_channel; i++) {		if(a->alc_a.addr_type == 1) {			*(ch_id + i) = add_alc_channel(*s_id, ports[i], addrs[0], a->alc_a.intface, a->alc_a.intface_name);		}		else {			*(ch_id + i) = add_alc_channel(*s_id, ports[i], addrs[i], a->alc_a.intface, a->alc_a.intface_name);		}		if(*(ch_id + i) == -1) {			while(i) {				retcode = remove_alc_channel(*s_id, *(ch_id + i - 1));				i--;			}		close_alc_session(*s_id);			return -4;		}		}	/* Generate fdt file first */	if(strcmp(a->fdt_file, "") == 0) {	  memset(a->fdt_file, 0, MAX_LENGTH);	  strcpy(a->fdt_file, "fdt_tsi");	  	  memset(tmp, 0, 5);	  #ifdef WIN32	  sprintf(tmp, "%I64u", a->alc_a.tsi);#else	  sprintf(tmp, "%llu", a->alc_a.tsi);#endif	  	  strcat(a->fdt_file, tmp);	  strcat(a->fdt_file, ".xml");  	  retcode = generate_fdt(a->file_path, a->alc_a.base_dir, s_id, a->fdt_file, a->complete_fdt,				 a->alc_a.verbosity);	  	  if(retcode < 0) {	    return -1;	  }	}	/***** FDT based send *****/	retval = sender_in_fdt_based_mode(s_id, ch_id, a);	return retval;}/* * This function is flute receiver's main function. * * Params:	arguments_t *a: Pointer to arguments structure where command line arguments are parsed, *			int *s_id: Pointer to session identifier, *			int *ch_id: Pointer to channel identifier, *			fdt_th_args_t *fdt_th_args: Pointer to structure conmtaining FDT and some other information. * * Return:	int: Different values (0, -1, -2, -3, -4, -5) depending on how function ends. * */int flute_receiver(arguments_t *a, int *s_id, int *ch_id, fdt_th_args_t *fdt_th_args) {	  unsigned short i;  int j, k, l, m;  int retval = 0;  int retcode = 0;    char filetoken[MAX_PATH];    struct sockaddr_in ipv4;  unsigned long addr_nb;  int port_nb;  unsigned short ipv6addr[8];  int nb_ipv6_part;  int dup_sep = 0;  char tmp[5];    char addrs[MAX_CHANNELS_IN_SESSION][MAX_LENGTH];	/* Mcast addresses on which to send */  char ports[MAX_CHANNELS_IN_SESSION][MAX_LENGTH];	/* Local port numbers  */  time_t systime;  bool is_printed = false;  #ifdef WIN32  ULONGLONG curr_time;#else  unsigned long long curr_time;#endif  #ifndef WIN32  pthread_t fdt_thread_id; #endif    char *sdp_buf = NULL;  FILE *sdp_fp;  struct stat	sdp_file_stats;  int nbytes;#ifdef WIN32  if(mkdir(a->alc_a.base_dir) < 0) {					#else		  if(mkdir(a->alc_a.base_dir, S_IRWXU) < 0) {#endif    if(errno != EEXIST) {      printf("mkdir failed: cannot create directory %s (errno=%i)\n", a->alc_a.base_dir, errno);      fflush(stdout);      return -1;    }  }  if(strcmp(a->sdp_file, "") != 0) {    if(stat(a->sdp_file, &sdp_file_stats) == -1) {      printf("Error: %s is not valid file name\n", a->sdp_file);      fflush(stdout);      return -1;    }        /* Allocate memory for buf */    if(!(sdp_buf = (char*)calloc((sdp_file_stats.st_size + 1), sizeof(char)))) {      printf("Could not alloc memory for sdp buffer!\n");      fflush(stdout);      return -1;    }        if((sdp_fp = fopen(a->sdp_file, "rb")) == NULL) {      printf("Error: unable to open sdp_file %s\n", a->sdp_file);      fflush(stdout);      free(sdp_buf);      return -1;    }        nbytes = fread(sdp_buf, 1, sdp_file_stats.st_size, sdp_fp);         if(parse_sdp_file(a, addrs, ports, sdp_buf) == -1) {      return -1;    }        if(a->alc_a.nb_channel == 0) {      printf("Error: No acceptable channels found in SDP.");      fflush(stdout);      return -1;    }  }  else {    if(((a->alc_a.cc_id == Null) && (a->alc_a.nb_channel != 1))) {            if(a->alc_a.addr_family == PF_INET) {		addr_nb = ntohl(inet_addr(a->alc_a.addr));	port_nb = atoi(a->alc_a.port);		for(j = 0; j < a->alc_a.nb_channel; j++) {	  	  ipv4.sin_addr.s_addr = htonl(addr_nb);	  	  memset(addrs[j], 0, MAX_LENGTH);	  memset(ports[j], 0, MAX_LENGTH);	  	  sprintf(addrs[j], "%s", inet_ntoa(ipv4.sin_addr));	  sprintf(ports[j], "%i", port_nb);	  addr_nb++;	  port_nb++;	}      }      else if(a->alc_a.addr_family == PF_INET6) {		port_nb = atoi(a->alc_a.port);		retcode = ushort_ipv6addr(a->alc_a.addr, &ipv6addr[0], &nb_ipv6_part);		if(retcode == -1) {	  return -1;					}		for(j = 0; j < a->alc_a.nb_channel; j++) {	  	  memset(addrs[j], 0, MAX_LENGTH);	  memset(ports[j], 0, MAX_LENGTH);	  dup_sep = 0;	  	  for(k = 0; k < nb_ipv6_part + 1; k++) {	    	    memset(tmp, 0, 5);	    	    if(ipv6addr[k] != 0) {	      sprintf(tmp, "%x", ipv6addr[k]);	      strcat(addrs[j], tmp);	    }	    else {	      if(dup_sep == 0) {		dup_sep = 1;	      }	      else {		printf("Invalid IPv6 address!\n");		fflush(stdout);		return -1;		      }		    }	    	    if(k != nb_ipv6_part) {	      strcat(addrs[j], ":");	    }	  }	  	  sprintf(ports[j], "%i", port_nb);	  	  port_nb++;	  	  if(j != a->alc_a.nb_channel - 1) {	    	    for(l = nb_ipv6_part;; l--) {	      	      if(l == 0) {		printf("Only %i channel possible!\n", (j + 1));		fflush(stdout);		return -1;		      }	      	      if(ipv6addr[l] + 1 > 0xFFFF) {		continue;	      }	      	      if(ipv6addr[l] == 0) {				if(nb_ipv6_part == 7) {		  ipv6addr[l]++;		  break;		}				for(m = nb_ipv6_part; m > l; m--) {		  ipv6addr[m + 1] = ipv6addr[m];			}				ipv6addr[l + 1] = 1;				nb_ipv6_part++;		break;	      }	      else {		ipv6addr[l]++;		break;	      }	    }	  }	}      }    }    else {      memset(addrs[0], 0, MAX_LENGTH);      memset(ports[0], 0, MAX_LENGTH);            memcpy(addrs[0], a->alc_a.addr, strlen(a->alc_a.addr));      memcpy(ports[0], a->alc_a.port, strlen(a->alc_a.port));    }  }    if(a->alc_a.stop_time != 0) {    time(&systime);    curr_time = systime + 2208988800U;        if(a->alc_a.stop_time <= curr_time) {      printf("Session end time reached\n");      fflush(stdout);      return -1;    }  }    *s_id = open_alc_session(&a->alc_a);    if(a->alc_a.start_time != 0) {    while(1) {            time(&systime);      curr_time = systime + 2208988800U;            if((a->alc_a.start_time - 3) > 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(get_session_state(*s_id) == SExiting) {	return -5;      }    }  }    if(a->alc_a.cc_id == Null) {        for(i = 0; (int)i < a->alc_a.nb_channel; i++) {            if(a->alc_a.addr_type == 1) {	*(ch_id + i) = add_alc_channel(*s_id, ports[i], addrs[0], a->alc_a.intface, a->alc_a.intface_name);      }      else {	*(ch_id + i) = add_alc_channel(*s_id, ports[i], addrs[i], a->alc_a.intface, a->alc_a.intface_name);      }            if(*(ch_id + i) == -1) {		while(i) {	  retcode = remove_alc_channel(*s_id, *(ch_id + i - 1));	  i--;	}	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色哦色哦哦色天天综合| 亚洲一级二级三级在线免费观看| 在线欧美一区二区| av午夜一区麻豆| 成人免费av资源| fc2成人免费人成在线观看播放| 国产乱人伦偷精品视频不卡| 激情都市一区二区| 国内成+人亚洲+欧美+综合在线| 麻豆一区二区三| 国产成人精品影视| jlzzjlzz亚洲女人18| 成人av影院在线| 色综合天天综合色综合av| 99国内精品久久| 精品视频全国免费看| 欧美一区二区三区视频免费播放 | 日本aⅴ亚洲精品中文乱码| 日韩国产精品久久| 国产麻豆精品theporn| 成人教育av在线| 欧美色网站导航| 日韩欧美一区中文| 国产精品麻豆网站| 一区二区三区av电影| 美女免费视频一区| 成人黄色电影在线 | 亚洲国产wwwccc36天堂| 丝瓜av网站精品一区二区| 日本欧美大码aⅴ在线播放| 国产在线精品不卡| 色网站国产精品| 日韩限制级电影在线观看| 久久精品一区二区三区av| 国产免费成人在线视频| 亚洲动漫第一页| 国产99久久精品| 91精品国产91久久久久久一区二区 | 在线播放一区二区三区| 26uuu精品一区二区| 亚洲免费在线看| 精品在线你懂的| 在线观看av一区二区| 久久久久久久综合狠狠综合| 亚洲综合在线电影| 国产精品一线二线三线精华| 欧美猛男gaygay网站| 国产精品萝li| 国产一区二区精品久久99| 欧美午夜在线观看| 亚洲同性gay激情无套| 黄一区二区三区| 欧美一级久久久| 亚洲va国产va欧美va观看| 91在线视频观看| 国产清纯在线一区二区www| 免费久久精品视频| 欧美日韩国产综合视频在线观看| 中文字幕日韩欧美一区二区三区| 久久99久久99| 精品久久国产字幕高潮| 午夜精品福利视频网站| 色伊人久久综合中文字幕| 国产精品久久久久久久久图文区 | 国产毛片精品一区| 911精品产国品一二三产区| 亚洲色图在线播放| 91在线视频播放地址| 亚洲国产精品二十页| 国产精品一二二区| 久久亚洲综合色| 国产一区二区三区久久久| 日韩视频一区二区在线观看| 天堂一区二区在线免费观看| 在线免费精品视频| 亚洲一区二区高清| 欧洲精品一区二区| 亚洲bdsm女犯bdsm网站| 欧美曰成人黄网| 亚洲成av人片| 91精品国产免费| 久久99精品久久久| 久久久综合视频| 成人18视频在线播放| 中文字幕制服丝袜成人av| 99re这里只有精品视频首页| 中文字幕在线观看一区| 91影院在线观看| 午夜精品久久久久久久久久| 欧美三级乱人伦电影| 青娱乐精品在线视频| 久久色视频免费观看| 成人国产精品免费观看| 亚洲精品成人精品456| 欧美日韩国产综合久久 | 精品国产亚洲在线| 成人一区在线观看| 亚洲一区在线免费观看| 日韩午夜在线影院| av日韩在线网站| 午夜av区久久| 国产偷v国产偷v亚洲高清| 色综合天天综合网天天看片| 日日夜夜精品视频免费| 精品对白一区国产伦| 99riav一区二区三区| 日韩国产欧美在线播放| 亚洲国产精品国自产拍av| 在线观看视频一区二区欧美日韩 | 日韩精品一区二区三区中文精品| 国精产品一区一区三区mba桃花 | 香蕉加勒比综合久久| 久久久久国产精品厨房| 欧美三级资源在线| 国产不卡一区视频| 丝袜美腿亚洲色图| 亚洲色图丝袜美腿| 精品国产乱码久久久久久图片 | 成人国产一区二区三区精品| 午夜精品久久久久久久99水蜜桃 | 久久av资源网| 亚洲一区二区在线免费看| 久久免费偷拍视频| 久久亚洲精品国产精品紫薇| 色婷婷综合久色| 国产一区二区三区香蕉| 亚洲国产乱码最新视频| 国产精品国产三级国产普通话99| 日韩亚洲欧美在线| 欧美亚洲禁片免费| 91视频免费看| 成人久久18免费网站麻豆| 精品一区二区三区影院在线午夜| 午夜精品久久久久影视| 一区二区三区中文在线观看| 久久久久99精品一区| 精品日韩欧美在线| 欧美一级欧美一级在线播放| 欧美又粗又大又爽| 91国偷自产一区二区三区观看| 国产精华液一区二区三区| 久久av中文字幕片| 久久av中文字幕片| 韩国理伦片一区二区三区在线播放| 亚洲成精国产精品女| 一区二区免费视频| 一区二区三区波多野结衣在线观看 | 精品无人码麻豆乱码1区2区| 亚洲福利视频一区二区| 亚洲精品视频一区| 一区二区在线观看av| 亚洲欧洲精品一区二区三区 | 欧美在线高清视频| 欧美人狂配大交3d怪物一区| 欧美在线免费播放| 91麻豆精品国产91久久久资源速度| 色妞www精品视频| 欧美性感一区二区三区| 欧美午夜片在线看| 欧美视频中文一区二区三区在线观看| 99re66热这里只有精品3直播| 国产不卡视频一区| 91香蕉视频mp4| 欧美视频在线一区| 在线播放日韩导航| 久久夜色精品国产噜噜av| 国产亚洲女人久久久久毛片| 国产清纯白嫩初高生在线观看91 | 欧美区视频在线观看| 777色狠狠一区二区三区| 日韩欧美卡一卡二| 久久久久99精品一区| 中文字幕日韩精品一区| 国内久久精品视频| 成年人国产精品| 91视视频在线直接观看在线看网页在线看| 色婷婷综合久久| 欧美一级二级三级蜜桃| 中文子幕无线码一区tr| 亚洲一区在线观看网站| 久久99精品久久久久久动态图| 国产成人综合在线观看| 色综合咪咪久久| 日韩欧美一区二区不卡| 国产精品久久看| 亚洲成a天堂v人片| 国产成人综合亚洲91猫咪| 色噜噜狠狠成人网p站| 日韩精品一区二区三区在线播放 | 亚洲三级小视频| 美女一区二区视频| 99国产欧美另类久久久精品| 欧美另类久久久品| 中文字幕在线一区免费| 日韩高清在线观看| 日本高清成人免费播放| 久久亚洲一区二区三区四区| 亚洲午夜精品17c| 成人免费视频一区| 91精品欧美综合在线观看最新|