NWLAB PART B
NWLAB PART B
CRC-CCITT(16-bits).
#include<stdio.h>
char m[50],g[50],r[50],q[50],temp[50];
void calrem()
{ int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48));
}
void shiftl()
{ int i;
for(i=1;i<=16;i++) r[i-1]=r[i];
}
void crc(int n)
{
int i,j;
for(i=0;i<n;i++) temp[i]=m[i];
for(i=0;i<n;i++) r[i]=m[i];
for(i=0;i<n-16;i++)
{
if(r[0] == '1')
{
q[i]='1';
calrem();
}
else
{
q[i]='0';
shiftl();
}
r[16]=m[17+i];
r[17]='\0';
for(j=0;j<=17;j++)
temp[j]=r[j];
}
q[n-16]='\0';
}
void caltrans(int n)
int main()
{
int n,i=0;
char ch,flag=0;
printf("Enter the frame bits:");
while((ch=getc(stdin))!='\n')
m[i++]=ch;
n=i;
for(i=0;i<16;i++)
m[n++]='0';
m[n]='\0';
printf("\nMessage after appending 16 zeros:%s",m);
for(i=0;i<=16;i++)
g[i]='0';
g[0]=g[4]=g[11]=g[16]='1';g[17]='\0';
printf("\nGenerator :%s\n",g);
crc(n);
printf("\n\nQuotient:%s",q);
printf("\nThe final remainder is:%s",r);
caltrans(n);
printf("\nTransmitted frame:%s",m);
printf("\n\n Enter transmitted frame which contains %d
bits:",n);
scanf("\n %s",m);
printf("CRC checking\n");
crc(n);
printf("\nRemainder is:%s",r);
for(i=0;i<16;i++)
{
if(r[i] == '0')
{
flag = 0;
continue;
}
else
{
flag = 1;
break;
}
}
if (flag == 1)
printf("\n\nError during transmission\n");
else
printf("\n\nReceived frame is correct\n");
}
SENDER
intermediate remainder
*********************************
remainder 1 : 00010000001000010
remainder 2 : 00100000010000100
remainder 3 : 01000000100001000
remainder 4 : 1000000100001000
Quotient:1000
The final remainder is:1000000100001000
Transmitted frame:10001000000100001000
RECEIVER
CRC checking
intermediate remainder
*********************************
remainder 1 : 000100100011000?0
remainder 2 : 00100100011000?00
remainder 3 : 0100100011000?000
remainder 4 : 100100011000?000
Remainder is:100100011000?000
SENDER
intermediate remainder
*********************************
Quotient:1000
The final remainder is:1000000100001000
Transmitted frame:10001000000100001000
RECEIVER
CRC checking
intermediate remainder
*********************************
remainder 1 : 00000000000000000
remainder 2 : 00000000000000000
remainder 3 : 00000000000000000
remainder 4 : 0000000000000000
Remainder is:0000000000000000
#include<stdio.h>
struct frame
{
int id;
char data[2];
};
int main()
{
struct frame buff[20],tempf[20],hilpul;
char text[20];
int flag,i,x,j,m,len,Temp,n,nof;
static int k,temp1[20];
printf("Enter The Text\n");
gets(text);
len=strlen(text);
nof=len/2;
if((nof * 2) != len)
nof++;
for(i=1;i<=nof;i++)
{
buff[i].id=i;
for(j=0;j<=1;j++){
buff[i].data[j]=text[k];
k++;}
buff[i].data[j] = '\0';
}
printf("\nSENDER");
printf("\nFragmented Frame\n");
for(i=1;i<=nof;i++){
printf("id=%d\t",buff[i].id);
printf("data=%s\n",buff[i].data);}
for(m=1;m<=nof;m++)
{
set:n=rand()%(nof+1);
for(i=1;i<=nof;i++)
{
if(temp1[i]==n)
{
goto set;
}
}
temp1[m]=n;
tempf[m].id=buff[n].id;
strcpy(tempf[m].data,buff[n].data);
tempf[j]=hilpul;
}
printf("swapped: %d | %d \n",tempf[j].id,tempf[i].id);
sleep(1);
}
}
for(i=1;i<=nof;i++)
{
printf("id=%d\t",tempf[i].id);
printf("data=%s\n",tempf[i].data);
}
for(i=1;i<=nof;i++)
printf("%s",tempf[i].data);
printf("\n");
return 0;
}
SENDER
Fragmented Frame
id=1 data=hi
id=2 data=how
id=3 data= ar
id=4 data=e y
id=5 data=ou
RECEIVER
Fragmented frame not in a sequence
id=1 data=hi
id=4 data=e y
id=3 data= ar
id=5 data=ou
id=2 data=how
Reassembling......
tempf[j].id=4 tempf[i].id= 1
swapped: 4 | 1
tempf[j].id=3 tempf[i].id= 1
swapped: 3 | 1
tempf[j].id=5 tempf[i].id= 1
swapped: 5 | 1
tempf[j].id=2 tempf[i].id= 1
swapped: 2 | 1
tempf[j].id=3 tempf[i].id= 4
swapped: 4 | 3
tempf[j].id=5 tempf[i].id= 3
swapped: 5 | 3
tempf[j].id=2 tempf[i].id= 3
swapped: 3 | 2
tempf[j].id=5 tempf[i].id= 4
swapped: 5 | 4
tempf[j].id=3 tempf[i].id= 4
swapped: 4 | 3
tempf[j].id=4 tempf[i].id= 5
swapped: 5 | 4
[root@localhost network]#
#include<stdio.h>
int size;
int main()
{
int l,k=1,mat[10]
[10],neighb,update[10],router,ans=1,j,i,dwn,choice,via[10];
while(ans)
{
printf("\nEnter size of matrix:");
scanf("%d",&size);
printf("\nEnter no. of neighbour nodes:");
scanf("%d",&neighb);
printf("\nEnter router name:");
scanf("%d",&router);
printf("size of matrix=%d\nno. of neighbours =%d\nthe router is=
%d",size,neighb,router);
for(i=1;i<=size;i++)
mat[router][i]=999;
mat[router][router]=0;
printf("\nenter available table entries of neighbours......\n\n");
for(i=1;i<=neighb;i++)
{
printf("enter node neighbour no %d : ",k);
scanf("%d",&update[k]);
printf("enter table values for node %d",update[k]);
for(j=1;j<=size;j++)
{
printf("\n%d | ",j);
scanf("%d",&mat[update[k]][j]);
}
printf("enter weight for %d to %d: ",router,update[k]);
scanf("%d",&mat[router][update[k]]);
k++;
}
k--;
for(i=1;i<=size;i++)
for(j=1;j<=k;j++)
if((mat[router][i]) > (mat[router][update[j]] +
mat[update[j]][i]))
{mat[router][i]=mat[router][update[j]]+mat[update[j]]
[i];
via[i]=update[j];}
scanf("%d",&ans);
k=1;
printf("\nrouter UP/DOWN 1/0 ? : ");
scanf("%d",&choice);
if(choice==0)
{
printf("\nenter the router to make down: ");
scanf("%d",&dwn);
for(l=1;l<=size;l++)
if(via[l]==dwn)
mat[router][l]=999;
}
printf("table for %d",router);
for(i=1;i<=size;i++)
printf("\n%d | %d",i,mat[router][i]);
}
}
2 | 0
3 | 20
4 | 25
2 | 25
3 | 30
4 | 0
2 | 10 | 0
3 | 30 | 2
4 | 10 | 0
2 | 999
3 | 999
4 | 10
Kruskal’s Algorithm
#include <stdio.h>
#include <unistd.h>
#define MAX 100
int parent[MAX],t[MAX][2],cost[MAX][MAX],a[MAX];
int main()
{
int i,j,n;
printf("Enter the number of nodes\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
scanf("%d",&cost[i][j]);
}
}
for(i=1;i<=n;i++)
{
parent[i]=0;
}
kruskal(n);
return (0);
}
int kruskal(int n)
{
int i,j,k,u,v,mincost,res1,res2,sum;
#include <stdio.h>
#include <unistd.h>
int main()
{
int n,i,j,source;
int cost[10][10],s[10],d[10],ne[10];
printf("Enter the number of nodes\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s[i]=0;
ne[i]=source;
d[i]=cost[source][i];
}
s[source]=1;
prims(n,cost,s,d,ne);
return(0);
}
}
}
Socket Client
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
bzero((char*)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(SERV_HOST_ADDR);
serv_addr.sin_port=htons(SERV_TCP_PORT);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
printf("socket error");
while(1){
printf("Enter the file name\n");
scanf("%s",buf);
write(sockfd,buf,BUFLEN);
printf("File contents\n");
read(sockfd,buf,BUFLEN);
printf("%s\n",buf);
}
close(sockfd);
return(0);
}
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
int sockfd,newsockfd,clilen,childpid,fd;
struct sockaddr_in cli_addr,serv_addr;
char buffer[BUFLEN];
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
printf("socket error");
bzero((char*) &serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(SERV_TCP_PORT);
if((childpid=fork())<0)
printf("server:fork error");
else if(childpid==0)
{
close(sockfd);while(1){
}
close(newsockfd);exit(0);
}}
}}
char m[50],g[50],r[50],q[50],temp[50];
void calrem()
{ int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48;
}
void shiftl()
{ int i;
for(i=1;i<=16;i++) r[i-1]=r[i];
}
FIFO
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>
#define FIFO1 "fifo1"
#define FIFO2 "fifo2"
#define PERMS 0666
int readfd,writefd;
void client(int,int),server(int,int);
int main()
{
pid_t childpid;
if((mkfifo(FIFO1,PERMS)) < 0)
printf("Can't create 1\n");
if((mkfifo(FIFO2,PERMS)) <0)
printf("Can't create 2\n");
if((childpid = fork()) == 0)
{
readfd= open(FIFO1,O_RDONLY,0);
writefd= open(FIFO2,O_WRONLY,0);
server(readfd,writefd);
close(readfd);
close(writefd);
exit(0);
}
writefd = open(FIFO1,O_WRONLY,0);
readfd = open(FIFO2,O_RDONLY,0);
client(readfd,writefd);
close(readfd);
close(writefd);
unlink(FIFO1);
unlink(FIFO2);
exit(1);
}
}
}
char m[50],g[50],r[50],q[50],temp[50];
void calrem()
{ int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48;
}
void shiftl()
{ int i;
for(i=1;i<=16;i++) r[i-1]=r[i];
}
//Message server//
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<sys/msg.h>
#include<string.h>
struct mesgq{
long mtype;
char mtext[1500];
};
int msgid;
int main()
{
int fd,nob;char fname[20];
struct mesgq buff1,buff2;
msgid=msgget((key_t)0x1,IPC_CREAT|0666);
printf("\n Server process");
for(;;){
msgrcv(msgid,&buff1,1500,0,0);
printf("\n Filename received :%s",buff1.mtext);
buff2.mtype=buff1.mtype;
fd=open(buff1.mtext,O_RDWR);
if(fd<0)
strcpy(buff2.mtext,"File doesnot exist\n");
else{
nob=lseek(fd,0,SEEK_END);
lseek(fd,0,SEEK_SET);
read(fd,buff2.mtext,nob);
}
msgsnd(msgid,&buff2,1500,0);
}
return 0;
}
#include<stdio.h>
#include<fcntl.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<sys/msg.h>
#include<string.h>
struct mesgq{
long mtype;
char mtext[1500];
};
int msgid;
int main()
{
char fname[20];
struct mesgq buff,recvbuff;
return 0;
}
char m[50],g[50],r[50],q[50],temp[50];
void calrem()
{ int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48;
}
void shiftl()
{ int i;
for(i=1;i<=16;i++) r[i-1]=r[i];
}
#include<stdio.h>
#include<math.h>
int c,m;
int mult(unsigned int x, unsigned int y, unsigned int n)
{
unsigned long int k=1;
int j;
for(j=1;j<=y;j++)
k=(k*x)%n;
return (unsigned int)k;
}
int main()
{
rsa();
return 1;
int calcprime(int n)
{
int i,lim,prime=1;
lim=n/2;
if(n==3||n==5)
return 1;
for(i=2;i>=lim;i++)
{
if((n%i)==0)
{
prime=0;
return prime;
}
}
return prime;
}
int rsa()
{
int t,p,q,z,d,e,b,n,mv,i,j;
char tmp[25];
int ttmp[25];
printf("\nEnter two prime numbers:");
printf("\nEnter two prime numbers such that their product is less
than 128:");
scanf("%d%d",&p,&q);
if(calcprime(p))
{
if(calcprime(q))
{
n=p*q;
z=(p-1)*(q-1);
for(i=2;i<z;i++)
{
if((calcgcd(z,i))==1)
{
e=i;
printf("\ne-%d\n",e);
break;
}
}
for(j=n;j>=1;j--)
{
if(((e*j)%z)==1)
#include<stdio.h>
#include<math.h>
int main()
{
int a[11]={0,0,0,0,0,0,0,0,0,0,0};
static int r[4];
int pos=0,i,temp[7];
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
main()
{
int
packets[8],i,j,clk,b_size,o_rate,i_rate,p_remain,p_sz_rm=0,p_sz,p_time,f
lag=0;
system("clear");
for(i=0;i<5;++i)
packets[i]=rand()%10;
for(i=0;i<5;++i)
{
if((packets[i]+p_sz_rm)>b_size)
{
if(packets[i]>b_size)
printf("\n Incoming packet size (%d) is Greater than bucket
capacity - REJECTED",packets[i]);
else
printf("\n Bucket capacity exceeded - REJECTED!!");
}
else
{ p_remain=4-i;
p_sz=packets[i];
p_sz_rm+=p_sz;
printf("\n_________________________\n");
printf("\n Incoming Packet :%d",p_sz);
printf("\n Transmission left:%d",p_sz_rm);
p_time=rand()%10;
printf("\n Next Packet Will come at :%d",p_time);
if(p_time-clk>0)
printf(" \n Time left %d No packets to transmit!!",p_time-
clk);
}
}
return(0);
}
_________________________
Incoming Packet :3
Transmission left:3
Next Packet Will come at :5
Time Left:5 - Transmitted!! Bytes Remaining:0
Time left 4 No packets to transmit!!
Incoming packet size (6) is Greater than bucket capacity - REJECTED
Incoming packet size (7) is Greater than bucket capacity - REJECTED
Incoming packet size (5) is Greater than bucket capacity - REJECTED
_________________________
Incoming Packet :3
Transmission left:3
Next Packet Will come at :6
Time Left:6 - Transmitted!! Bytes Remaining:0
Time left 5 No packets to transmit!!
_________________________
Incoming Packet :3
Transmission left:3
Next Packet Will come at :5
Time Left:5 - Transmitted!! Bytes Remaining:0
Time left 4 No packets to transmit!!
Incoming packet size (6) is Greater than bucket capacity - REJECTED
Incoming packet size (7) is Greater than bucket capacity - REJECTED
Incoming packet size (5) is Greater than bucket capacity - REJECTED
_________________________
Incoming Packet :3
Transmission left:3
Next Packet Will come at :6
Time Left:6 - Transmitted!! Bytes Remaining:
Time left 5 No packets to transmit!!