Exemplo n.º 1
0
/**
 * Receive code words through a UNIX socket.
 *
 * From the code words, retrieve the original data flow.
 *
 * @param UNIX socket descriptor
 * @param pointer to data flow
 *
 * @return -1 in case of error, the size (in bytes) of data flow otherwise
 */
static int
receiveMessage (int desc, char *message)
{
  static int stop = 0;
  int cw_size = 0;
  int data_size = 0;

  char cw[MAX_MSG_CODE];
  memset (cw, '\0', MAX_MSG_CODE * sizeof (char));

  struct sockaddr_un remote_addr;
  unsigned int addr_size = sizeof (struct sockaddr_un);

  if (stop)
  {
    return (0);
  }
  else
  {
    cw_size = recvfrom (desc, cw, MAX_MSG_CODE, 0,
			(struct sockaddr *) &remote_addr, &addr_size);

    if (cw_size == 0)
    {
      return (0);
    }
    else if (cw_size > 0)
    {
      decoding (cw, cw_size, message, &data_size);
      return (data_size);
    }

    return (-1);
  }
}
Exemplo n.º 2
0
//overloaded to accept plain string code
string Morse::decode_morse(string code)
{
	stringstream buffer(code);
	string code_to_decipher, decoded = "";

	while (buffer >> code_to_decipher){
		decoded += " " + decoding(root, code_to_decipher);
	}

	return decoded;

}
Exemplo n.º 3
0
int main(int argc, char * argv[]){
    if (argc > 1) {
        getEncodeFlags(argc, argv);
        encode();
        flushBits();
    }
    else {
        decoding();
        decode();
    }
    freeArray();
    return 1;
}
Exemplo n.º 4
0
//the parser for reading from file
string Morse::decode_morse(ifstream& fin)
{
	if (!fin.good()){
		return "ERROR: The file cannot be opened";
	}
	stringstream buffer;
	buffer << fin.rdbuf();
	string code_to_decipher, decoded = "";

	while (buffer >> code_to_decipher){
		decoded += " " + decoding(root, code_to_decipher);
	}

	return decoded;
}
Exemplo n.º 5
0
void coding_test() {
    char* encode;
    int encode_len;
    char* decode;
    int decode_len;

    if (encoding("abcd", 4, &encode, &encode_len) < 0) {
        return ;
    }

    printf("%.*s\n", encode_len - 4, encode + 4);

    if (decoding(encode + 4, encode_len - 4, &decode, &decode_len) < 0) {
        return ;
    }

    printf("%.*s\n", decode_len, decode);

}
Exemplo n.º 6
0
int main(void)
{
	FILE *file=fopen("input.txt","r");

	int cases;

	if(file ==NULL)
		exit(1);
	
	fscanf(file, "%d", &cases);

	while(cases--)
	{
		int num;
		char str[MAX];

		fscanf(file, "%d %s", &num, str);

		if(num==0)
			encoding(str);
		else
			decoding(str);
	}
}
Exemplo n.º 7
0
void main()
{
	int i, x, s, start, finish, value, count;
	unsigned long int j;
	unsigned int mask=1;
	long int error, ferror;
	double progress, b;

	srand(1977);

	mono_table();

	printf("\nEnter start SNR: ");
	scanf("%d", &start);
	printf("\nEnter finish SNR: ");
	scanf("%d", &finish);
	printf("\nseq_num: ");
	scanf("%d", &seq_num);
/*	
	printf("\nPlease input the number of k*p-bit sequence: ");	
	for(i=0;i<8;i++)
	{
		printf("when SNR=%d, input the seqnum=",(start+i));
		scanf("%d", &seq_num[i]);
	}
*/
/*
		//*******debug*********
		printf("\nstart=%d	finish=%d	seq_num=%d	\n\n",start,finish,seq_num);
		//****************** 
*/	for(SNR=start;SNR<=finish;SNR++)
	{	
		N0=(1.0/(float(k)/float(n)))/pow(10.0, float(SNR)/10.0);
		sgm=sqrt(N0/2);
		b=1.0;
		error=0;
		//ferror=0; 
		for(j=1;j<=seq_num;j++)
		{

			//printf("\n\n*************For the %dth frame*************:\n", j);
			//Generate binary message
			for(i=0;i<k*p;i++)
				bi_message[i]=rand()%2;

			//Convert to nonbinary
			for(i=0;i<k;i++)
				message[i]=bi_message[p*i]+2*bi_message[p*i+1]+4*bi_message[p*i+2];

			encoder();

	
			//Convert the codeword into binary
			for(i=0;i<n;i++)
			{
				value=codeword[i];
				mask=1;
				for(x=0;x<p;x++) //for(m=p-1;m>=0;m--)
				{
					if((value & mask)>0)
						bi_codeword[p*i+x]=1;
					else
						bi_codeword[p*i+x]=0;
					mask=mask<<1;
				}
			}

			modulation();
			
			channel();
			
			/////////To be done?////////////
			demodulation();

			decoding();
			//Number of errors calculation
			//error=0;
			for(i=0;i<p*n;i++)
				if(bi_codeword[i]!=dec_codeword[i])
					error++;
				
			/*
			if(error!=0)
				ferror++;
			*/

			progress=(double)(j*100)/(double)seq_num;
			
			BER=(double)(error)/(double)(n*p*j);
			//FER=(double)(ferror)/(double)(j),
			printf("Progress=%0.1f, SNR=%2.1d, Bit Errors=%2.1d, BER=%E\r", progress, SNR, error, BER);
//			printf(" Progress=%0.1f,dectect=%d\r",progress,dectec);
			
		}
		BER=(double)error/(double)(n*p*seq_num);
		//FER=(double)(ferror)/(double)(seq_num);
		printf("Progress=%0.1f, SNR=%2.1d, Bit Errors=%2.1d, BER=%E\n",progress, SNR, error, BER);
//		printf(" Progress=%0.1f,dectect=%d\r",progress,dectec);

	}
/*	if( dectec==0 )
		printf("\n\nit's over!!");
	else
		printf("\n\n error!!!!!!!!!!");
*/	
	getchar();
	getchar();
		
}
//接收其他client传过来的 URL list
void communication::recv()
{
    char buffer[MAXLINE];
    char whole_text [MAXLINE*5];
    int listenfd=socket(AF_INET,SOCK_STREAM,0);//定义socket,指向ipv4地址的字节流套接口

    struct sockaddr_in serverAddr;
    memset(&serverAddr,0,sizeof(serverAddr));//sockAddr_in 进行初始化
    serverAddr.sin_family=AF_INET;
    serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);
    serverAddr.sin_port=htons(PORT);
    if(bind(listenfd,(struct sockaddr *) &serverAddr,sizeof(serverAddr))==-1)
    {
        printf("There is an error during binding\n");
        return ;
    }
    else
    {
        printf("Bind successfully!!!\n");
    }
    //对listenfd进行监听,从最初建立时的主动套接口(用于进行connect的套接口)转化为被动套接口(接受连接)
    listen(listenfd,100);
    int connectfd;
    socklen_t addrlen;
    struct sockaddr_in connectAddr;
    memset(&connectAddr,0,sizeof(connectAddr));
    printf("Be ready to accept a connection!\n");

    // 实例化一个url checker
    htmlParser * checker = new htmlParser();

    while(1)
    {
        connectfd=accept(listenfd,(struct sockaddr * )&connectAddr,&addrlen);//接受client端一个请求的socket
        char addr_buffer [100];
        //const char * clientAddress=inet_ntop(AF_INET,&connectAddr.sin_addr,addr_buffer,sizeof(addr_buffer));//获取客户端的ip地址
        int n;
        //接收其他client传过来的json文本,并存入whole_text
        whole_text [0] = '\0'; // that is important
        while((n=read(connectfd,buffer,MAXLINE))>0)
        {
        	buffer[n] = '\0';
        	strcat(whole_text , buffer);
        }
        //解析whole_text,convert to url Queue
        queue<url *> urlQueue = decoding(whole_text);
        cout<<"Received\t"<<urlQueue.size()<<" urls\t"<<"From\t"<<connectAddr.sin_port<<endl;
        //Add to url Frontier
        if (urlQueue.size()>0)
        {
        	url * newurl = NULL;
            while(!urlQueue.empty())
            {
            	newurl = urlQueue.front();
            	//check url
            	if(newurl!=NULL&&newurl->isValid()
            			&&!checker->urlseen(newurl)&&checker->urlfilter(newurl))
            	{
            		//Add to url frontier
					pthread_mutex_lock(&frontier_mutex);
					frontier->pushurl(newurl);
					pthread_mutex_unlock(&frontier_mutex);
            	}
            	urlQueue.pop();
            }
        	pthread_mutex_unlock(&frontier_mutex);
        }
        close(connectfd);
    }
    close(listenfd);
}
Exemplo n.º 9
0
void saje::findConfig() {
    QFile file(homeDir()+".config/Saje/accounts.xml");
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
        decoding(file);
}
Exemplo n.º 10
0
int main(int argc, char *argv[])
{
    QString filePath, extenCheck; // file path /extension check variable
    QString ioFileName[2]; // input/output file name
    QString mode[2]; //compress or decompress mode -c/-d

    if(argc == 5 || argc == 3) //compress
    {
        ioFileName[0] = argv[2]; //input file name
        //qDebug() << ioFileName[0];
        mode[0] = argv[1]; //-c
        if(argc == 5 && mode[0] == "-c")
        {
            mode[1] = argv[3]; //-o
            if(mode[1] == "-o")
            {
                ioFileName[1] = argv[4]; //output file name
                extenCheck = ioFileName[1].right(5);
                if(extenCheck == ".huff")
                {
                    encoding(ioFileName);//encoding function
                }
                else
                {
                    qDebug() << "\nExtensao nao .huff\n";
                    showInfo(); //informations about compressing and decompressing
                }
            }
        }
        else if(argc == 3 && mode[0] == "-c")
        {
            ioFileName[1] = "oName";
            encoding(ioFileName); //decoding function
        }
        else
        {
            showInfo();
        }
    }
    else if(argc == 4 || argc == 2) //decompress
    {
        ioFileName[0] = argv[1];
        extenCheck = ioFileName[0].right(5);
        if(extenCheck == ".huff")
        {
            if(argc == 4)
            {
                mode[0] = argv[2]; //-d
                if(mode[0] == "-d")
                {
                    filePath = argv[3];//home/user/path
                    QDir savingPath(filePath);
                    if(savingPath.exists())
                    {
                        ioFileName[1] = filePath;
                        decoding(ioFileName);
                    }
                    else
                    {
                        qDebug() << "\nDiretorio inexistente\n";
                    }
                }
                else
                {
                    showInfo();
                }
            }
            else
            {
                ioFileName[1] = "oName";
                decoding(ioFileName);
            }
        }
        else
        {
            qDebug() << "\nExtensao nao .huff\n";
            showInfo();
        }
    }
    else
    {
        showInfo();
    }
    return 0;
}
void main()
{
	int i, x, s,value, count;
	float start,finish;
	unsigned long int j;
	unsigned int mask=1;
	long int error, ferror;
	double progress, b;

	FILE *fp;
	if((fp=fopen("data_(63,31)m=5.txt","a"))==NULL)
	{
		printf("Can't open the data.txt\n");
		exit(0);
	}
	fclose(fp);


	srand(1977);


	printf("\nEnter start SNR: ");
	scanf("%f", &start);
	printf("\nEnter finish SNR: ");
	scanf("%f", &finish);
	printf("\nseq_num: ");
	scanf("%d", &seq_num);


	for(SNR=start;SNR<=finish;SNR++)
	{	
		N0=(1.0/(float(k)/float(n)))/pow(10.0, SNR/10.0);
		sgm=sqrt(N0/2);
		b=1.0;
		error=0;
		//ferror=0; 
		for(j=1;j<=seq_num;j++)
		{

		//printf("\n\n*************For the %dth frame*************:\n", j);
		//Generate binary message
			for(i=0;i<k*p;i++)
				bi_message[i]=rand()%2;

			//Convert to nonbinary
			for(i=0;i<k;i++)
				message[i]=bi_message[p*i]+2*bi_message[p*i+1]+4*bi_message[p*i+2]+8*bi_message[p*i+3]
					   +16*bi_message[p*i+4]+32*bi_message[p*i+5];

/*			//******debug*******
			message[0]=63;	message[1]=15;	message[2]=45;	message[3]=45;	message[4]=20;	message[5]=22;	message[6]=34;	
			message[7]=44;	message[8]=8;	message[9]=51;	message[10]=29;	message[11]=23;	message[12]=5;	message[13]=41;
			message[14]=20;
	
			//*******************
*/
			encoder();

	
			//Convert the codeword into binary
			for(i=0;i<n;i++)
			{
				value=codeword[i];
				mask=1;
				for(x=0;x<p;x++) //for(m=p-1;m>=0;m--)
				{
					if((value & mask)>0)
						bi_codeword[p*i+x]=1;
					else
						bi_codeword[p*i+x]=0;
					mask=mask<<1;
				}
			}
		
			modulation();
			
			channel();
			
			/////////To be done?////////////
			demodulation();

			decoding();
			
			//Number of errors calculation
			//error=0;
			for(i=0;i<p*n;i++)
				if(bi_codeword[i]!=dec_codeword[i])
					error++;
/*			
			if(f_error_temp==1)
				printf("\nerror=%d\n",error);
			f_error_temp=0;
*/			/*
			if(error!=0)
				ferror++;
			*/

			progress=(double)(j*100)/(double)seq_num;
			
			BER=(double)(error)/(double)(n*p*j);
			//FER=(double)(ferror)/(double)(j),
			printf("Progress=%0.1f, SNR=%2.1f, Bit Errors=%2.1d, BER=%E\r", progress, SNR, error, BER);
//			printf(" Progress=%0.1f,dectect=%d\r",progress,dectec);
			
		}
		BER=(double)error/(double)(n*p*seq_num);
		//FER=(double)(ferror)/(double)(seq_num);
		printf("Progress=%0.1f, SNR=%2.1f, Bit Errors=%2.1d, BER=%E\n",progress, SNR, error, BER);
//		printf(" Progress=%0.1f,dectect=%d\r",progress,dectec);
		fp=fopen("data_(63,31)m=5.txt","a");
		fprintf(fp,"Progress=%0.1f, SNR=%2.1f, Bit Errors=%2.1d, BER=%E\n",progress, SNR, error, BER);
		fclose(fp);
	}


	getchar();
	getchar();
		
}