⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coop.cc

📁 这是P2P流媒体方案-NICE的实现源码
💻 CC
字号:
/* * File: coop.cc * Author: Suman Banerjee <suman@cs.umd.edu> * Date: 15th February, 2002 * Terms: GPL * * NICE Application Layer Multicast */#include "o_timeout.h"#include "coop-agent.h"#include "talker_utils.h"#include "timer.h"#include <stdlib.h>#include <unistd.h>#include <pthread.h>int NUM_PACKETS = 3000;float PACKET_GAP = 1.0;int START_DELAY = 20;int pkt_counter=1;pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;void SIGINTHandler(int SignalType) {  printf("Disconnecting from talker...\n");  exit(disconnect_talker());}//sunnyvoid* thread_start(void* arg) {	coopAgent* agent=(coopAgent*)arg;	agent->start();	return NULL;}void* wait(struct timeval tv){	printf("wait........\n");	select(0, NULL, NULL, NULL, &tv);	printf("10........\n");	return NULL;}void* send_word(void* arg){	coopAgent* agent=(coopAgent*)arg;	char *buffer="sunny";	int buflen=5;	struct timeval tv;	tv.tv_sec=10;	tv.tv_usec=0;		printf("start sending\n");	while(true)	{		pthread_mutex_lock(&mutex);		{printf("###############send################\n");			agent->specific_send_data_pkt((char*)buffer, buflen+1);		}		pthread_mutex_unlock(&mutex);		wait(tv);	}	return NULL;}void packet_handler(char* buf, int len) {	//printf("packet with len %d received \n", len);	printf("%dth packet_handler: %s\n", pkt_counter++, buf);}//sunnyint main(int argc, char ** argv) {  struct sigaction handler;//sunny	int sender;//sunny	#ifdef LOG_CLUSTER_INFO_DETAILED  if (argc != 7 && argc != 9) {    printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> <sender> [<drawer hostname> <drawer port>]\n", argv[0]);    exit(-1);  }/*  if (argc != 6 && argc != 8) {    printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> [<drawer hostname> <drawer port>]\n", argv[0]);    exit(-1);  }*/#else  if(argc != 7) {    printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port> <sender>\n", argv[0]);    exit(-1);  }/*  if(argc != 6) {    printf("usage: %s <agent id> <port num> <bse hostname> <talker hostname> <talker port>\n", argv[0]);    exit(-1);  }*/#endif  handler.sa_handler = SIGINTHandler;  if(sigfillset(&handler.sa_mask) < 0) {    printf("Couldn't fill signal set\n");    return -1;  }  handler.sa_flags = 0;  if(sigaction(SIGINT, &handler, 0) < 0) {    printf("Couldn't set signal action\n");    return -1;  }  coopAgent mycoop;#ifdef LOG_CLUSTER_INFO_DETAILED  if(argc == 9)    mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3], argv[7], atoi(argv[8]));  else    mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3]);/*  if(argc == 8)    mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3], argv[7], atoi(argv[8]));  else    mycoop.init(atoi(argv[1]),0,atoi(argv[2]), argv[3]);*/#else  mycoop.init(atoi(argv[1]),0,atoi(argv[2]),argv[3]);#endif//sunny	sender=atoi(argv[6]);	if (sender != 0)  		mycoop.add_listening_fd(mycoop.udp_sock, NULL);	else  		mycoop.add_listening_fd(mycoop.udp_sock, packet_handler);		  if (setup_talker(argv[4], atoi(argv[5])) < 0 )	exit(-1);//sunny  initTimeout();//sunny	pthread_t thread;	pthread_t send_thread;	pthread_create(&thread, NULL, thread_start, &mycoop);	printf("my coop started\n");	if (sender!=0)		pthread_create(&send_thread, NULL, send_word, &mycoop);	pthread_join(thread, NULL);	if (sender!=0)		pthread_join(send_thread, NULL);//  mycoop.start();//sunny  return 0; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -