NETWORK LAB PROGRAMS<br />1.CRC<br />#include<stdio.h><br />#include<string.h><br />char data[100],concatdata[117],src_crc[17],dest_crc[17],frame[120],divident[18],divisor[18]=\"
10001000000100001\"
,res[17]=\"
0000000000000000\"
;<br />void crc_cal(int node)<br />{<br />int i,j;<br />for(j=17;j<=strlen(concatdata);j++)<br />{<br />if(divident[0]=='1')<br />{<br />for(i=1;i<=16;i++)<br />if(divident[i]!=divisor[i])<br />divident[i-1]='1';<br />else<br />divident[i-1]='0';<br />}<br />else<br />{<br />for(i=1;i<=16;i++)<br />divident[i-1]=divident[i];<br />}<br />if(node==0)<br />divident[i-1]=concatdata[j];<br />else<br />divident[i-1]=frame[j];<br />}<br />divident[i-1]='\0';<br />printf(\"
\ncrc is %s\n\"
,divident);<br />if(node==0)<br />{<br />strcpy(src_crc,divident);<br />}<br />else<br />strcpy(dest_crc,divident);<br />}<br />int main()<br />{<br /> int i,len,rest;<br /> printf(\"
\n\t\t\tAT SOURCE NODE\n\nenter the data to be send :\"
);<br /> gets(data);<br /> strcpy(concatdata,data);<br /> strcat(concatdata,\"
0000000000000000\"
);<br /> for(i=0;i<=16;i++)<br />divident[i]=concatdata[i];<br /> divident[i+1]='\0';<br /> crc_cal(0);<br /> printf(\"
\ndata is :\t\"
);<br /> puts(data);<br /> printf(\"
\nthe frame transmitted is :\t\"
);<br /> printf(\"
\n%s%s\"
,data,src_crc);<br /> printf(\"
\n\t\tSOURCE NODE TRANSMITTED THE FRAME ---->\"
);<br /> printf(\"
\n\n\n\n\t\t\tAT DESTINATION NODE\nenter the received frame:\t\"
);<br /> gets(frame);<br /> for(i=0;i<=16;i++)<br />divident[i]=frame[i];<br /> divident[i+1]='\0';<br /> crc_cal(1);<br /> if(strcmp(dest_crc,res)==0)<br />printf(\"
\nreceived frame is error free \"
);<br /> else<br />printf(\"
\nreceived frame has one or more error\"
);<br /> return 1;<br />}<br />2.Distance vector<br />#include<stdio.h><br />struct rtable<br />{<br />int dist[20],nextnode[20];<br />}table[20];<br />int cost[10][10],n;<br />void distvector()<br />{<br />int i,j,k,count=0;<br />for(i=0;i<n;i++)<br />{<br />for(j=0;j<n;j++)<br />{<br />table[i].dist[j]=cost[i][j];<br />table[i].nextnode[j]=j;<br />}<br />}<br />  do<br />  {<br />  count=0;<br />for(i=0;i<n;i++)<br />{<br />for(j=0;j<n;j++)<br />{<br />for(k=0;k<n;k++)<br />{<br />if(table[i].dist[j]>cost[i][k]+table[k].dist[j])<br />{<br />table[i].dist[j]=table[i].dist[k]+table[k].dist[j];<br />table[i].nextnode[j]=k;<br />count++;<br />}<br />}<br />}<br />}<br />}while(count!=0);<br />}<br />int main()<br />{<br />int i,j;<br />printf(\"
\nenter the no of vertices:\t\"
);<br />scanf(\"
%d\"
,&n);<br />printf(\"
\nenter the cost matrix\n\"
);<br />for(i=0;i<n;i++)<br />for(j=0;j<n;j++)<br />scanf(\"
%d\"
,&cost[i][j]);<br />distvector();<br />for(i=0;i<n;i++)<br />{<br />printf(\"
\nstate value for router %c \n\"
,i+65);<br />printf(\"
\ndestnode\tnextnode\tdistance\n\"
);<br />for(j=0;j<n;j++)<br />{<br />if(table[i].dist[j]==99)<br />printf(\"
%c\t\t-\t\tinfinite\n\"
,j+65);<br />else<br />printf(\"
%c\t\t%c\t\t%d\n\"
,j+65,table[i].nextnode[j]+65,table[i].dist[j]);<br />}<br />}<br />return 0;<br />}<br />3.FIFO Client<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <fcntl.h><br />#include <sys/types.h><br />#include <sys/stat.h><br />#include <unistd.h><br />#define FIFO1_NAME \"
fifo1\"
<br />#define FIFO2_NAME \"
fifo2\"
<br />int main()<br />{<br /> char p[100],f[100],c[100];<br />int num,num2,fl,fd,fd2;<br />mknod(FIFO1_NAME,S_IFIFO | 0666, 0);<br />mknod(FIFO2_NAME,S_IFIFO | 0666,0);<br />printf(\"
\n Waiting for SERVER ! \n\n\"
);<br />fd=open(FIFO1_NAME,O_WRONLY);<br />printf(\"
Server online !\n client:Enter the path \n\"
);<br />while(gets(p), !feof(stdin))<br />{<br />  <br />if ((num = write(fd,p,strlen(p))) == -1)<br /> <br /> perror(\"
write error\n\"
);<br /> <br /> else<br />  {<br />   printf(\"
waiting for reply ...\n\"
);<br /> <br />  fd2=open(FIFO2_NAME, O_RDONLY);<br />  <br /> if ((num2=read(fd2,c,300))== -1)<br />    <br />        perror(\"
Transfer error\n\"
);<br />    <br />    else<br />      <br />  {<br />       <br />    printf(\"
File receiver ! Displaying the contents :\n\"
);<br />    <br />       if (fputs(c,stdout)== EOF)<br />    <br />         perror(\"
print error \n\"
);<br />   <br />       exit(1);<br />}<br />    }<br />}<br />}<br />4.FIFO Server<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <fcntl.h><br />#include <sys/types.h><br />#include <sys/stat.h><br />#include <unistd.h><br />#define FIFO1_NAME \"
fifo1\"
<br />#define FIFO2_NAME \"
fifo2\"
<br />int main()<br />{<br /> <br />char p[100],f[100],c[100];<br />int num,num2,fl,fd,fd2;<br />mknod(FIFO1_NAME,S_IFIFO | 0666, 0);<br />mknod(FIFO2_NAME,S_IFIFO | 0666,0);<br />printf(\"
SERVER Online ! \n\n\"
);<br />fd=open(FIFO1_NAME,O_RDONLY);<br />printf(\"
client online !@\n waiting for request ...\n\n\"
);<br />while(1)<br />{<br />  <br />if ((num = read(fd,p,100)) == -1)<br /> <br /> perror(\"
read error\n\"
);<br /> <br /> else<br />  <br />{<br />   <br /> p[num]='\0';<br /> <br />   if (( fl=open(p,O_RDONLY)) <0)<br />  <br />   {<br />    <br />   printf(\"
\n SERVER : %s not found\n\"
);<br />   <br />    exit(1);<br /> <br />    }<br />  <br /> else<br />   <br /> {<br />    <br />  printf(\"
SERVER : %s found ! \n transfering the contents  \n\"
,p);<br />  <br />    stdin=fdopen(fl,\"
r\"
);<br /> <br />     if(fgets(c,300,stdin) != NULL)<br />  <br />    {<br />    <br />    fd2=open(FIFO2_NAME, O_WRONLY);<br />    <br />    if(num2=write(fd2,c,strlen(c))== -1)<br />    perror(\"
Transfer error\n\"
);<br />   <br />     else<br />     <br />      printf(\"
SERVER : Transfer completed \n\"
);<br />  <br />     }<br />    <br />  else<br />  <br />        perror(\"
read error\n\"
);<br />  <br />        exit(1);<br />       }<br />   }<br />}<br />}<br />5.Frame<br />#include<stdio.h><br />struct frame<br />{<br />int fslno;<br />char finfo[20];<br />};<br />struct frame arr[10];<br />int n;<br />void sort()<br />{<br />int i,j,ex;<br />struct frame temp;<br />for(i=0;i<n-1;i++)<br />{<br />ex=0;<br />for(j=0;j<n-i-1;j++)<br />if(arr[j].fslno>arr[j+1].fslno)<br />{<br />temp=arr[j];<br />arr[j]=arr[j+1];<br />arr[j+1]=temp;<br />ex++;<br />}<br />}<br />}<br />int main()<br />{<br />int i;<br />system(\"
clear\"
);<br />printf(\"
enter the number of frames\n\"
);<br />scanf(\"
%d\"
,&n);<br />printf(\"
enter the frame sequence number and frame contents\n\"
);<br />for(i=0;i<n;i++)<br />scanf(\"
%d%s\"
,&arr[i].fslno,&arr[i].finfo);<br />sort();<br />printf(\"
the frames in sequence\n\"
);<br />for(i=0;i<n;i++)<br />{<br />printf(\"
01111110 %d\t%s 01111110\n\"
,arr[i].fslno,arr[i].finfo);<br />printf(\"
|---------------------------------------------|\n\"
);<br />}<br />}<br />6. Hamming code<br />#include<stdio.h><br />#include<math.h><br />main()<br />{<br />int i,j,k,count,error_pos=0,flag=0;<br />char dw[20],cw[20],data[20];<br />printf(\"
enter the data as binary bit stream 7 bits\n\"
);<br />scanf(\"
%s\"
,data);<br />for(i=1,j=0,k=0;i<12;i++)<br />{<br />if(i==(int)pow(2,j))<br />{<br />dw[i]='?'; <br />j++;<br />}<br />else<br />{<br />dw[i]=data[k];<br />k++;<br />}<br />}<br />for(i=0;i<4;i++)<br />  <br /> {<br />count=0;<br />for(j=(int)pow(2,i);j<12;j+=(int)pow(2,i))<br />{<br />for(k=0;k<(int)pow(2,i);k++)<br />{<br />if(dw[j]=='1')<br /> count++; <br />j++; <br />}<br />}<br />if(count%2 == 0)<br />dw[(int)pow(2,i)]='0';<br />else<br />dw[(int)pow(2,i)]='1';<br />}<br />printf(\"
\n CODE WORD is \n\n\"
);<br />for(i=1;i<12;i++)<br />printf(\"
%c\"
,dw[i]);<br />printf(\"
\n\nenter the received hamming code\n\n\"
);<br />scanf(\"
%s\"
,cw);<br />for(i=12;i>0;i--)<br />cw[i]=cw[i-1];<br />for(i=0;i<4;i++)<br />{<br />count=0;<br /> for(j=(int)pow(2,i);j<12;j+=(int)pow(2,i))<br />               <br /> {<br />                       <br /> for(k=0;k<(int)pow(2,i);k++)<br />                      <br />  {<br />                                <br />if(cw[j]=='1')<br />                               <br /> count++;<br />                               <br /> j++;<br />                  <br />      }<br />}<br />               <br /> if(count%2 != 0)<br />                       <br /> error_pos=error_pos+(int)pow(2,i);<br />}<br />if(error_pos ==0)<br />printf(\"
\n\n There is no ERROR in received Code Word\n\"
);<br />else<br />{ <br />if(cw[error_pos]==dw[error_pos])<br />{<br />  <br /> printf(\"
\n\nThere are  TWO or MORE  Errors in received Code Word\n\n\"
);<br />  <br /> printf(\"
SORRY........! Hamming code cannot correct TWO or MORE Errors\n\"
);<br /> <br />  flag=1;<br />} <br />else<br />printf(\"
\nThere is an Error in bit position  %d of received Code Word \n\n\"
,error_pos);<br />if(flag==0)<br />{<br />if(cw[error_pos]=='1')<br />cw[error_pos]='0';<br />else<br />cw[error_pos]='1';<br />printf(\"
\n\nCORRECTED CODE WORD is \n\n\"
);<br />for(i=1;i<12;i++)<br />printf(\"
%c\"
,cw[i]);<br />}<br />}<br />printf(\"
\n\n\"
);<br />}<br />7. Leaky bucket<br />#include<stdio.h><br />#include<math.h><br />#include<stdlib.h><br />int t_rand(int a)<br />{<br />int rn;<br />rn=random()%10;<br />rn=rn%a;<br />if(rn==0)<br />rn=1;<br />return(rn);<br />}<br />int main()<br />{<br />int packets[5],i,j,clk,b_size,o_rate,p_sz_rm=0,p_sz,p_time;<br />int flag=0;<br />system(\"
clear\"
);<br />for(i=0;i<5;++i)<br />packets[i]=t_rand(6)*10;<br />printf(\"
\n enter the output rate\n\"
);<br />scanf(\"
%d\"
,&o_rate);<br />printf(\"
\n enter the bucket size\n\"
);<br />scanf(\"
%d\"
,&b_size);<br />for(i=0;i<5;++i)<br />{<br />if((packets[i]+p_sz_rm)>b_size)<br />{<br />if(packets[i]>b_size)<br />printf(\"
\n incoming packet size (%d) is greater than bucket capacity %d\n p/c rejected\"
,packets[i],b_size);<br />else<br />printf(\"
\n bucket capacity exceeded\"
);<br />}<br />else<br />{<br /> <br /> for(j=0;;++j)<br />{<br />p_sz=packets[i];<br />p_sz_rm+=p_sz;<br />printf(\"
\nnew incoming packet size %d\"
,p_sz);<br />printf(\"
\nbyte-transmissions left:%d\"
,p_sz_rm);<br />p_time=t_rand(5)*10;<br />printf(\"
\n next packet will come at %d\"
,p_time);<br />for(clk=0;clk<=p_time;clk+=1)<br />{<br />printf(\"
\n time left:%d\"
,p_time-clk);<br />sleep(1);<br />if(p_sz_rm>=o_rate)<br />{<br />printf(\"
\n%d bytes transmitted\"
,o_rate);<br />p_sz_rm-=o_rate;<br />printf(\"
\n bytes remaining:%d\"
,p_sz_rm);<br />}<br />else<br />printf(\"
\nno packets to transmit!!\"
);<br />}<br />if(p_sz_rm!=0)<br />flag=1;<br />break;<br />}<br />}<br />}<br />return(0);<br />}<br />8. RSA<br />#include<stdio.h><br />#include<string.h><br />#include<math.h><br />int mul(unsigned int x,unsigned int y,unsigned int n)<br />{<br />unsigned long int k=1;<br />int j;<br />for(j=1;j<=y;j++)<br />k=(k*x)%n;<br />return(unsigned int)k;<br />}<br />int main()<br />{<br />int i;<br />char msg[100];<br />unsigned int pt[100],ct[100],n,d,e;<br />printf(\"
enter msg \n\"
);<br />scanf(\"
%[^\n]\"
,&msg);<br />for(i=0;i<strlen(msg);i++)<br />{<br />pt[i]=msg[i];<br />}<br />n=253;<br />d=17;<br />e=13;<br />for(i=0;i<strlen(msg);i++)<br />{<br />ct[i]=mul(pt[i],e,n);<br />}<br />printf(\"
\n Cipher Text=\"
);<br />for(i=0;i<strlen(msg);i++)<br />{<br />printf(\"
%d\"
,ct[i]);<br />}<br />for(i=0;i<strlen(msg);i++)<br />{<br />pt[i]=mul(ct[i],d,n);<br />}<br />printf(\"
\n Plain Text=\"
);<br />for(i=0;i<strlen(msg);i++)<br />{<br />printf(\"
%c\"
,pt[i]);<br />}<br />printf(\"
\n\"
);<br />}<br />9. TCP client<br />#include<stdio.h><br />#include<sys/types.h><br />#include<sys/socket.h><br />#include<netinet/in.h><br />#include<netdb.h><br />#include<string.h><br />int main(int argc,char *argv[])<br />{<br />int sockfd,newsockfd,portno,len,n;<br />char buffer[256],c[20000];<br />struct sockaddr_in serv,cli;<br />FILE *fd;<br />if(argc<2)<br />{<br />printf(\"
error :no port no\n usage:\n ./client portnumber\n ex:./client 7777\n\"
);<br />exit(1);<br />}<br />sockfd=socket(AF_INET , SOCK_STREAM,0);<br />bzero((char *)&serv,sizeof(serv));<br />portno=atoi(argv[1]);<br />serv.sin_family=AF_INET;<br />serv.sin_port=htons(portno);<br />if(connect(sockfd,(struct sockaddr *)&serv,sizeof(serv))<0)<br />{<br />printf(\"
server not responding.. \n\n\n\t i am to terminate.\n\"
);<br />exit(1);<br />}<br />printf(\"
enter the file with complete path\n\"
);<br />scanf(\"
%s\"
,&buffer);<br />if(write(sockfd,buffer,strlen(buffer))<0)<br />printf(\"
error writing to sock...\"
);<br />bzero(c,2000);<br />printf(\"
 reading......\n...\n\"
);<br />if(read(sockfd,c,1999)<0)<br />printf(\"
error:read error..\n\"
);<br />printf(\"
client :displaying content of %s\n....\n\"
,buffer);<br />fputs(c,stdout);<br />printf(\"
\n....\n\"
);<br />return 0;<br />}<br />10. TCP server<br />#include<stdio.h><br />#include<sys/types.h><br />#include<sys/socket.h><br />#include<netinet/in.h><br />#include<netdb.h><br />int main(int argc ,char *argv[])<br />{<br />int sockfd,newsockfd,portno,len,n;<br />char buffer[256],c[2000],cc[20000];<br />struct sockaddr_in serv,cli;<br />FILE *fd;<br />if(argc<2)<br />{<br />printf(\"
 error: no port no\n usage:\n ./server port num \n\"
);<br />exit(1);<br />}<br />sockfd=socket(AF_INET,SOCK_STREAM,0);<br />portno=atoi(argv[1]);<br />serv.sin_family=AF_INET;<br />serv.sin_addr.s_addr=INADDR_ANY;<br />serv.sin_port=htons(portno);<br />bind(sockfd,(struct sockaddr *)&serv,sizeof(serv));<br />listen(sockfd,10);<br />len=sizeof(cli);<br />printf(\"
server:\n waiting for connection..\"
);<br />newsockfd=accept(sockfd,(struct sockaddr *)&cli,&len);<br />bzero(buffer,255);<br />n=read(newsockfd,buffer,255);<br />printf(\"
\n server recv:%s\n\"
,buffer);<br />if((fd=fopen(buffer,\"
r\"
))!=NULL)<br />{<br />printf(\"
server:%s found \n opening and reading...\n\"
,buffer);<br />printf(\"
reading....\n.....reading complete\"
);<br />fgets(cc,2000,fd);<br />while(!feof(fd))<br />{<br />fgets(c,2000,fd);<br />strcat(cc,c);<br />}<br />n=write(newsockfd,cc,strlen(cc));<br />if(n<0)<br />printf(\"
error writing to socket..\"
);<br />printf(\"
\n transfer complete.\n\"
);<br />}<br />else<br />{<br />printf(\"
\n server:file not found!\n\"
);<br />n=write(newsockfd,\"
file not found!\"
,15);<br />if(n<0)<br />printf(\"
error: writing to socket..\"
);<br />}<br />return 0;<br />}<br />
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester
Network lap pgms 7th semester

Network lap pgms 7th semester

  • 1.
    NETWORK LAB PROGRAMS<br/>1.CRC<br />#include<stdio.h><br />#include<string.h><br />char data[100],concatdata[117],src_crc[17],dest_crc[17],frame[120],divident[18],divisor[18]=\" 10001000000100001\" ,res[17]=\" 0000000000000000\" ;<br />void crc_cal(int node)<br />{<br />int i,j;<br />for(j=17;j<=strlen(concatdata);j++)<br />{<br />if(divident[0]=='1')<br />{<br />for(i=1;i<=16;i++)<br />if(divident[i]!=divisor[i])<br />divident[i-1]='1';<br />else<br />divident[i-1]='0';<br />}<br />else<br />{<br />for(i=1;i<=16;i++)<br />divident[i-1]=divident[i];<br />}<br />if(node==0)<br />divident[i-1]=concatdata[j];<br />else<br />divident[i-1]=frame[j];<br />}<br />divident[i-1]='\0';<br />printf(\" \ncrc is %s\n\" ,divident);<br />if(node==0)<br />{<br />strcpy(src_crc,divident);<br />}<br />else<br />strcpy(dest_crc,divident);<br />}<br />int main()<br />{<br /> int i,len,rest;<br /> printf(\" \n\t\t\tAT SOURCE NODE\n\nenter the data to be send :\" );<br /> gets(data);<br /> strcpy(concatdata,data);<br /> strcat(concatdata,\" 0000000000000000\" );<br /> for(i=0;i<=16;i++)<br />divident[i]=concatdata[i];<br /> divident[i+1]='\0';<br /> crc_cal(0);<br /> printf(\" \ndata is :\t\" );<br /> puts(data);<br /> printf(\" \nthe frame transmitted is :\t\" );<br /> printf(\" \n%s%s\" ,data,src_crc);<br /> printf(\" \n\t\tSOURCE NODE TRANSMITTED THE FRAME ---->\" );<br /> printf(\" \n\n\n\n\t\t\tAT DESTINATION NODE\nenter the received frame:\t\" );<br /> gets(frame);<br /> for(i=0;i<=16;i++)<br />divident[i]=frame[i];<br /> divident[i+1]='\0';<br /> crc_cal(1);<br /> if(strcmp(dest_crc,res)==0)<br />printf(\" \nreceived frame is error free \" );<br /> else<br />printf(\" \nreceived frame has one or more error\" );<br /> return 1;<br />}<br />2.Distance vector<br />#include<stdio.h><br />struct rtable<br />{<br />int dist[20],nextnode[20];<br />}table[20];<br />int cost[10][10],n;<br />void distvector()<br />{<br />int i,j,k,count=0;<br />for(i=0;i<n;i++)<br />{<br />for(j=0;j<n;j++)<br />{<br />table[i].dist[j]=cost[i][j];<br />table[i].nextnode[j]=j;<br />}<br />}<br /> do<br /> {<br /> count=0;<br />for(i=0;i<n;i++)<br />{<br />for(j=0;j<n;j++)<br />{<br />for(k=0;k<n;k++)<br />{<br />if(table[i].dist[j]>cost[i][k]+table[k].dist[j])<br />{<br />table[i].dist[j]=table[i].dist[k]+table[k].dist[j];<br />table[i].nextnode[j]=k;<br />count++;<br />}<br />}<br />}<br />}<br />}while(count!=0);<br />}<br />int main()<br />{<br />int i,j;<br />printf(\" \nenter the no of vertices:\t\" );<br />scanf(\" %d\" ,&n);<br />printf(\" \nenter the cost matrix\n\" );<br />for(i=0;i<n;i++)<br />for(j=0;j<n;j++)<br />scanf(\" %d\" ,&cost[i][j]);<br />distvector();<br />for(i=0;i<n;i++)<br />{<br />printf(\" \nstate value for router %c \n\" ,i+65);<br />printf(\" \ndestnode\tnextnode\tdistance\n\" );<br />for(j=0;j<n;j++)<br />{<br />if(table[i].dist[j]==99)<br />printf(\" %c\t\t-\t\tinfinite\n\" ,j+65);<br />else<br />printf(\" %c\t\t%c\t\t%d\n\" ,j+65,table[i].nextnode[j]+65,table[i].dist[j]);<br />}<br />}<br />return 0;<br />}<br />3.FIFO Client<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <fcntl.h><br />#include <sys/types.h><br />#include <sys/stat.h><br />#include <unistd.h><br />#define FIFO1_NAME \" fifo1\" <br />#define FIFO2_NAME \" fifo2\" <br />int main()<br />{<br /> char p[100],f[100],c[100];<br />int num,num2,fl,fd,fd2;<br />mknod(FIFO1_NAME,S_IFIFO | 0666, 0);<br />mknod(FIFO2_NAME,S_IFIFO | 0666,0);<br />printf(\" \n Waiting for SERVER ! \n\n\" );<br />fd=open(FIFO1_NAME,O_WRONLY);<br />printf(\" Server online !\n client:Enter the path \n\" );<br />while(gets(p), !feof(stdin))<br />{<br /> <br />if ((num = write(fd,p,strlen(p))) == -1)<br /> <br /> perror(\" write error\n\" );<br /> <br /> else<br /> {<br /> printf(\" waiting for reply ...\n\" );<br /> <br /> fd2=open(FIFO2_NAME, O_RDONLY);<br /> <br /> if ((num2=read(fd2,c,300))== -1)<br /> <br /> perror(\" Transfer error\n\" );<br /> <br /> else<br /> <br /> {<br /> <br /> printf(\" File receiver ! Displaying the contents :\n\" );<br /> <br /> if (fputs(c,stdout)== EOF)<br /> <br /> perror(\" print error \n\" );<br /> <br /> exit(1);<br />}<br /> }<br />}<br />}<br />4.FIFO Server<br />#include <stdio.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <fcntl.h><br />#include <sys/types.h><br />#include <sys/stat.h><br />#include <unistd.h><br />#define FIFO1_NAME \" fifo1\" <br />#define FIFO2_NAME \" fifo2\" <br />int main()<br />{<br /> <br />char p[100],f[100],c[100];<br />int num,num2,fl,fd,fd2;<br />mknod(FIFO1_NAME,S_IFIFO | 0666, 0);<br />mknod(FIFO2_NAME,S_IFIFO | 0666,0);<br />printf(\" SERVER Online ! \n\n\" );<br />fd=open(FIFO1_NAME,O_RDONLY);<br />printf(\" client online !@\n waiting for request ...\n\n\" );<br />while(1)<br />{<br /> <br />if ((num = read(fd,p,100)) == -1)<br /> <br /> perror(\" read error\n\" );<br /> <br /> else<br /> <br />{<br /> <br /> p[num]='\0';<br /> <br /> if (( fl=open(p,O_RDONLY)) <0)<br /> <br /> {<br /> <br /> printf(\" \n SERVER : %s not found\n\" );<br /> <br /> exit(1);<br /> <br /> }<br /> <br /> else<br /> <br /> {<br /> <br /> printf(\" SERVER : %s found ! \n transfering the contents \n\" ,p);<br /> <br /> stdin=fdopen(fl,\" r\" );<br /> <br /> if(fgets(c,300,stdin) != NULL)<br /> <br /> {<br /> <br /> fd2=open(FIFO2_NAME, O_WRONLY);<br /> <br /> if(num2=write(fd2,c,strlen(c))== -1)<br /> perror(\" Transfer error\n\" );<br /> <br /> else<br /> <br /> printf(\" SERVER : Transfer completed \n\" );<br /> <br /> }<br /> <br /> else<br /> <br /> perror(\" read error\n\" );<br /> <br /> exit(1);<br /> }<br /> }<br />}<br />}<br />5.Frame<br />#include<stdio.h><br />struct frame<br />{<br />int fslno;<br />char finfo[20];<br />};<br />struct frame arr[10];<br />int n;<br />void sort()<br />{<br />int i,j,ex;<br />struct frame temp;<br />for(i=0;i<n-1;i++)<br />{<br />ex=0;<br />for(j=0;j<n-i-1;j++)<br />if(arr[j].fslno>arr[j+1].fslno)<br />{<br />temp=arr[j];<br />arr[j]=arr[j+1];<br />arr[j+1]=temp;<br />ex++;<br />}<br />}<br />}<br />int main()<br />{<br />int i;<br />system(\" clear\" );<br />printf(\" enter the number of frames\n\" );<br />scanf(\" %d\" ,&n);<br />printf(\" enter the frame sequence number and frame contents\n\" );<br />for(i=0;i<n;i++)<br />scanf(\" %d%s\" ,&arr[i].fslno,&arr[i].finfo);<br />sort();<br />printf(\" the frames in sequence\n\" );<br />for(i=0;i<n;i++)<br />{<br />printf(\" 01111110 %d\t%s 01111110\n\" ,arr[i].fslno,arr[i].finfo);<br />printf(\" |---------------------------------------------|\n\" );<br />}<br />}<br />6. Hamming code<br />#include<stdio.h><br />#include<math.h><br />main()<br />{<br />int i,j,k,count,error_pos=0,flag=0;<br />char dw[20],cw[20],data[20];<br />printf(\" enter the data as binary bit stream 7 bits\n\" );<br />scanf(\" %s\" ,data);<br />for(i=1,j=0,k=0;i<12;i++)<br />{<br />if(i==(int)pow(2,j))<br />{<br />dw[i]='?'; <br />j++;<br />}<br />else<br />{<br />dw[i]=data[k];<br />k++;<br />}<br />}<br />for(i=0;i<4;i++)<br /> <br /> {<br />count=0;<br />for(j=(int)pow(2,i);j<12;j+=(int)pow(2,i))<br />{<br />for(k=0;k<(int)pow(2,i);k++)<br />{<br />if(dw[j]=='1')<br /> count++; <br />j++; <br />}<br />}<br />if(count%2 == 0)<br />dw[(int)pow(2,i)]='0';<br />else<br />dw[(int)pow(2,i)]='1';<br />}<br />printf(\" \n CODE WORD is \n\n\" );<br />for(i=1;i<12;i++)<br />printf(\" %c\" ,dw[i]);<br />printf(\" \n\nenter the received hamming code\n\n\" );<br />scanf(\" %s\" ,cw);<br />for(i=12;i>0;i--)<br />cw[i]=cw[i-1];<br />for(i=0;i<4;i++)<br />{<br />count=0;<br /> for(j=(int)pow(2,i);j<12;j+=(int)pow(2,i))<br /> <br /> {<br /> <br /> for(k=0;k<(int)pow(2,i);k++)<br /> <br /> {<br /> <br />if(cw[j]=='1')<br /> <br /> count++;<br /> <br /> j++;<br /> <br /> }<br />}<br /> <br /> if(count%2 != 0)<br /> <br /> error_pos=error_pos+(int)pow(2,i);<br />}<br />if(error_pos ==0)<br />printf(\" \n\n There is no ERROR in received Code Word\n\" );<br />else<br />{ <br />if(cw[error_pos]==dw[error_pos])<br />{<br /> <br /> printf(\" \n\nThere are TWO or MORE Errors in received Code Word\n\n\" );<br /> <br /> printf(\" SORRY........! Hamming code cannot correct TWO or MORE Errors\n\" );<br /> <br /> flag=1;<br />} <br />else<br />printf(\" \nThere is an Error in bit position %d of received Code Word \n\n\" ,error_pos);<br />if(flag==0)<br />{<br />if(cw[error_pos]=='1')<br />cw[error_pos]='0';<br />else<br />cw[error_pos]='1';<br />printf(\" \n\nCORRECTED CODE WORD is \n\n\" );<br />for(i=1;i<12;i++)<br />printf(\" %c\" ,cw[i]);<br />}<br />}<br />printf(\" \n\n\" );<br />}<br />7. Leaky bucket<br />#include<stdio.h><br />#include<math.h><br />#include<stdlib.h><br />int t_rand(int a)<br />{<br />int rn;<br />rn=random()%10;<br />rn=rn%a;<br />if(rn==0)<br />rn=1;<br />return(rn);<br />}<br />int main()<br />{<br />int packets[5],i,j,clk,b_size,o_rate,p_sz_rm=0,p_sz,p_time;<br />int flag=0;<br />system(\" clear\" );<br />for(i=0;i<5;++i)<br />packets[i]=t_rand(6)*10;<br />printf(\" \n enter the output rate\n\" );<br />scanf(\" %d\" ,&o_rate);<br />printf(\" \n enter the bucket size\n\" );<br />scanf(\" %d\" ,&b_size);<br />for(i=0;i<5;++i)<br />{<br />if((packets[i]+p_sz_rm)>b_size)<br />{<br />if(packets[i]>b_size)<br />printf(\" \n incoming packet size (%d) is greater than bucket capacity %d\n p/c rejected\" ,packets[i],b_size);<br />else<br />printf(\" \n bucket capacity exceeded\" );<br />}<br />else<br />{<br /> <br /> for(j=0;;++j)<br />{<br />p_sz=packets[i];<br />p_sz_rm+=p_sz;<br />printf(\" \nnew incoming packet size %d\" ,p_sz);<br />printf(\" \nbyte-transmissions left:%d\" ,p_sz_rm);<br />p_time=t_rand(5)*10;<br />printf(\" \n next packet will come at %d\" ,p_time);<br />for(clk=0;clk<=p_time;clk+=1)<br />{<br />printf(\" \n time left:%d\" ,p_time-clk);<br />sleep(1);<br />if(p_sz_rm>=o_rate)<br />{<br />printf(\" \n%d bytes transmitted\" ,o_rate);<br />p_sz_rm-=o_rate;<br />printf(\" \n bytes remaining:%d\" ,p_sz_rm);<br />}<br />else<br />printf(\" \nno packets to transmit!!\" );<br />}<br />if(p_sz_rm!=0)<br />flag=1;<br />break;<br />}<br />}<br />}<br />return(0);<br />}<br />8. RSA<br />#include<stdio.h><br />#include<string.h><br />#include<math.h><br />int mul(unsigned int x,unsigned int y,unsigned int n)<br />{<br />unsigned long int k=1;<br />int j;<br />for(j=1;j<=y;j++)<br />k=(k*x)%n;<br />return(unsigned int)k;<br />}<br />int main()<br />{<br />int i;<br />char msg[100];<br />unsigned int pt[100],ct[100],n,d,e;<br />printf(\" enter msg \n\" );<br />scanf(\" %[^\n]\" ,&msg);<br />for(i=0;i<strlen(msg);i++)<br />{<br />pt[i]=msg[i];<br />}<br />n=253;<br />d=17;<br />e=13;<br />for(i=0;i<strlen(msg);i++)<br />{<br />ct[i]=mul(pt[i],e,n);<br />}<br />printf(\" \n Cipher Text=\" );<br />for(i=0;i<strlen(msg);i++)<br />{<br />printf(\" %d\" ,ct[i]);<br />}<br />for(i=0;i<strlen(msg);i++)<br />{<br />pt[i]=mul(ct[i],d,n);<br />}<br />printf(\" \n Plain Text=\" );<br />for(i=0;i<strlen(msg);i++)<br />{<br />printf(\" %c\" ,pt[i]);<br />}<br />printf(\" \n\" );<br />}<br />9. TCP client<br />#include<stdio.h><br />#include<sys/types.h><br />#include<sys/socket.h><br />#include<netinet/in.h><br />#include<netdb.h><br />#include<string.h><br />int main(int argc,char *argv[])<br />{<br />int sockfd,newsockfd,portno,len,n;<br />char buffer[256],c[20000];<br />struct sockaddr_in serv,cli;<br />FILE *fd;<br />if(argc<2)<br />{<br />printf(\" error :no port no\n usage:\n ./client portnumber\n ex:./client 7777\n\" );<br />exit(1);<br />}<br />sockfd=socket(AF_INET , SOCK_STREAM,0);<br />bzero((char *)&serv,sizeof(serv));<br />portno=atoi(argv[1]);<br />serv.sin_family=AF_INET;<br />serv.sin_port=htons(portno);<br />if(connect(sockfd,(struct sockaddr *)&serv,sizeof(serv))<0)<br />{<br />printf(\" server not responding.. \n\n\n\t i am to terminate.\n\" );<br />exit(1);<br />}<br />printf(\" enter the file with complete path\n\" );<br />scanf(\" %s\" ,&buffer);<br />if(write(sockfd,buffer,strlen(buffer))<0)<br />printf(\" error writing to sock...\" );<br />bzero(c,2000);<br />printf(\" reading......\n...\n\" );<br />if(read(sockfd,c,1999)<0)<br />printf(\" error:read error..\n\" );<br />printf(\" client :displaying content of %s\n....\n\" ,buffer);<br />fputs(c,stdout);<br />printf(\" \n....\n\" );<br />return 0;<br />}<br />10. TCP server<br />#include<stdio.h><br />#include<sys/types.h><br />#include<sys/socket.h><br />#include<netinet/in.h><br />#include<netdb.h><br />int main(int argc ,char *argv[])<br />{<br />int sockfd,newsockfd,portno,len,n;<br />char buffer[256],c[2000],cc[20000];<br />struct sockaddr_in serv,cli;<br />FILE *fd;<br />if(argc<2)<br />{<br />printf(\" error: no port no\n usage:\n ./server port num \n\" );<br />exit(1);<br />}<br />sockfd=socket(AF_INET,SOCK_STREAM,0);<br />portno=atoi(argv[1]);<br />serv.sin_family=AF_INET;<br />serv.sin_addr.s_addr=INADDR_ANY;<br />serv.sin_port=htons(portno);<br />bind(sockfd,(struct sockaddr *)&serv,sizeof(serv));<br />listen(sockfd,10);<br />len=sizeof(cli);<br />printf(\" server:\n waiting for connection..\" );<br />newsockfd=accept(sockfd,(struct sockaddr *)&cli,&len);<br />bzero(buffer,255);<br />n=read(newsockfd,buffer,255);<br />printf(\" \n server recv:%s\n\" ,buffer);<br />if((fd=fopen(buffer,\" r\" ))!=NULL)<br />{<br />printf(\" server:%s found \n opening and reading...\n\" ,buffer);<br />printf(\" reading....\n.....reading complete\" );<br />fgets(cc,2000,fd);<br />while(!feof(fd))<br />{<br />fgets(c,2000,fd);<br />strcat(cc,c);<br />}<br />n=write(newsockfd,cc,strlen(cc));<br />if(n<0)<br />printf(\" error writing to socket..\" );<br />printf(\" \n transfer complete.\n\" );<br />}<br />else<br />{<br />printf(\" \n server:file not found!\n\" );<br />n=write(newsockfd,\" file not found!\" ,15);<br />if(n<0)<br />printf(\" error: writing to socket..\" );<br />}<br />return 0;<br />}<br />