/** * 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); } }
//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; }
int main(int argc, char * argv[]){ if (argc > 1) { getEncodeFlags(argc, argv); encode(); flushBits(); } else { decoding(); decode(); } freeArray(); return 1; }
//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; }
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); }
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); } }
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); }
void saje::findConfig() { QFile file(homeDir()+".config/Saje/accounts.xml"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) decoding(file); }
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(); }