PARITY CHECKER
#include<bits/stdc++.h>
using namespace std;
int parity_check(vector<int> &msg,int n)
{
int count=0;
for(int i=0;i<n;i++)
{
if(msg[i]==1)
{
count++;
}
}
return count;
}
int main()
{
int m,n;
cout<<"Enter total Number of bits: ";
cin>>n;
cout<<"Enter Number of bits:"<<endl;
vector<int> msg;
for(int i=0;i<n;i++)
{
cin>>m;
msg.push_back(m);
}
int a=parity_check(msg,n);
while(1){
int ch;
cout<<"\n\n---------Parity check-----------";
cout<<"\n\n1. Even parity";
cout<<"\n2. Odd Parity";
//cout<<"\n2. Odd Parity";
cout<<"\n\nEnter your choice: ";
cin>>ch;
switch(ch)
{
case 1:
if(a%2==0)
{
msg.push_back(0);
cout<<"\nNo error occurred";
}
else
{
msg.push_back(1);
cout<<"\nError occurred";
}
break;
case 2:
if(a%2!=0)
{
msg.push_back(0);
cout<<"\nNo error occurred";
}
else
{
msg.push_back(1);
cout<<"\nError occurred";
}
case 3:
{
exit(1)
break;
default:
cout<<"\nInvalid choice !!!";
}
}
}
return 0;
}
--------------------------------------------------------------------------------------------------
Hamming code
#include<bits/stdc++.h>
using namespace std;
void hammingCode(vector<int> &msg,int m)
{
int r=1;
while(pow(2,r)< (m+r+1))
{
r++;
}
vector<int> hc(m+r);
for(int i=0;i<r;++i)
{
hc[pow(2,i)-1]=-1;
}
int j=0;
for(int i=0;i<m+r;i++)
{
if(hc[i]!=-1)
{
hc[i]=msg[j];
j++;
}
}
for (int i = 0; i < (r + m); i++)
{
if(hc[i] != -1)
continue;
int x = log2(i + 1);
int count = 0;
for(int j = i + 2;j <= (r + m); ++j)
{
if(j & (1 << x))
{
if(hc[j - 1] == 1)
{
count++;
}
}
}
//even parity
if(count % 2 == 0)
{
hc[i] = 0;
}
else
{
hc[i] = 1;
}
}
cout<<"-----------------Message bits---------------\n\n";
for(int i=0;i<m;i++)
{
cout<<msg[i]<<" ";
}
cout<<"\n\n--------------Generated Hamming Code----------------\n";
for(int i=0;i<hc.size();i++)
{
cout<<hc[i]<<" ";
}
}
int main()
{
int m;
cout<<"Enter number of message bits: ";
cin>>m;
int a;
vector<int> msg;
for(int i=0;i<m;i++)
{
cin>>a;
msg.push_back(a);
}
hammingCode(msg,m);
return 0;
}
-------------------------------------------------------------------------------------
CRC
#include <iostream>
#include <math.h>
#include <cstring>
using namespace std;
char exor(char a,char b)
{
if(a==b)
return '0';
else
return '1';
}
void crc(char data[], char key[])
{
int datalen = strlen(data);
int keylen = strlen(key);
for(int i=0;i<keylen-1;i++)
data[datalen+i]='0';
data[datalen+keylen-1]='\0';
int codelen = datalen+keylen-1;
char temp[20],rem[20];
for(int i=0;i<keylen;i++)
rem[i]=data[i];
for(int j=keylen;j<=codelen;j++)
{
for(int i=0;i<keylen;i++)
temp[i]=rem[i];
if(rem[0]=='0')
{
for(int i=0;i<keylen-1;i++)
rem[i]=temp[i+1];
}
else
{
for(int i=0;i<keylen-1;i++)
rem[i]=exor(temp[i+1],key[i+1]);
}
if(j!=codelen)
rem[keylen-1]=data[j];
else
rem[keylen-1]='\0';
}
for(int i=0;i<keylen-1;i++)
data[datalen+i]=rem[i];
data[codelen]='\0';
cout<<"CRC="<<rem<<"\nDataword="<<data;
}
int main()
{
char key[20],data[20];
cout<<"Enter the data:";
cin>>data;
cout<<"Enter the key:";
cin>>key;
crc(data,key);
return 0;
}
#include<iostream>
#include<stdio.h>
using
namespace std;
int
main()
{
int
count,src_router,i,j,k,w,v,min;
int
cost_matrix[100][100],dist[100],last[100];
int
flag[100];
cout<<"\n
Enter the no of routers";
cin>>count;
cout<<"\n
Enter the cost matrix values:";
for(i=0;i<count;i++)
{
for(j=0;j<count;j++)
{
printf("\n%d->%d:",i,j);
scanf("%d",&cost_matrix[i][j]);
if(cost_matrix[i][j]<0)cost_matrix[i][j]=1000;
}
}
printf("\n
Enter the source router:");
scanf("%d",&src_router);
for(v=0;v<count;v++)
{
flag[v]=0;
last[v]=src_router;
dist[v]=cost_matrix[src_router][v];
}
flag[src_router]=1;
for(i=0;i<count;i++)
{
min=1000;
for(w=0;w<count;w++)
{
if(!flag[w])
if(dist[w]<min)
{
v=w;
min=dist[w];
}
}
flag[v]=1;
for(w=0;w<count;w++)
{
if(!flag[w])
if(min+cost_matrix[v][w]<dist[w])
{
dist[w]=min+cost_matrix[v][w];
last[w]=v;
}
}
}
for(i=0;i<count;i++)
{
printf("\n%d==>%d:Path
taken:%d",src_router,i,i);
w=i;
while(w!=src_router)
{
printf("\n<--%d",last[w]);w=last[w];
}
printf("\n
Shortest path cost:%d",dist[i]);
}
}
----------------------------------------Distance Vector-------------------------------------------
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
int graph[50][50];
int i,j,k,t;
int nn;
cout<<"\n Enter Number of Nodes:";
cin>>nn;
/* Initialize
graph*/
for
(i=0;i<nn;i++)
{
for(j=0;j<nn;j++)
{
graph[i][j]=-1;
}
}
/* Vertex names */
char
ch[7]={'A','B','C','D','E','F','G'};
/* Get input */
for
(i=0;i<nn;i++)
{
for(j=0;j<nn;j++)
{
if(i==j)
{
graph[i][j]=0;
}
if(graph[i][j]==-1)
{
cout<<"\n Enter Distance between
"<<ch[i]<<" - "<<ch[j]<<" : ";
cin>>t;
graph[i][j]=graph[j][i]=t;
}
}
}
/* Initializing
via */
int via[50][50];
for
(i=0;i<nn;i++)
{
for(j=0;j<nn;j++)
{
via[i][j]=-1;
}
}
cout<<"\n After Initialization";
/* Display table
initialization */
for
(i=0;i<nn;i++)
{
cout<<"\n"<<ch[i]<<" Table";
cout<<"\nNode\tDist\tVia";
for(j=0;j<nn;j++)
{
cout<<"\n"<<ch[j]<<"\t"<<graph[i][j]<<"\t"<<via[i][j];
}
}
//sharing table
int
sh[50][50][50];
for(i=0;i<nn;i++)
{
for(j=0;j<nn;j++)
{
for
(k=0;k<nn;k++)
{
/*
Check if edge is present or not*/
if((graph[i][j]>-1)&&(graph[j][k]>-1))
{
sh[i][j][k]=graph[j][k]+graph[i][j];
}
else
{
sh[i][j][k]=-1;
}
}
}
}
/*displaying
shared table */
for(i=0;i<nn;i++)
{
cout<<"\n\n For "<<ch[i];
for
(j=0;j<nn;j++)
{
cout<<"\n From "<<ch[j];
for(k=0;k<nn;k++)
{
cout<<"\n "<<ch[k]<<" "<<sh[i][j][k];
}
}
}
/* Updating */
int final[50][50];
for(i=0;i<nn;i++)
{
for(j=0;j<nn;j++)
{
/* Copy
initial value from input graph*/
final[i][j]=graph[i][j];
via[i][j]=i;
/*Update
them*/
/* Check
condition a - b - c */
for(k=0;k<nn;k++)
{
if((final[i][j]>sh[i][k][j]) || (final[i][j] == -1))
{
if(sh[i][k][j]>-1)
{
final[i][j]=sh[i][k][j];
via[i][j]=k;
}
}
}
/* After
considering three vertex if final not found
consider 4th
a- b-
c- d
*/
if(final[i][j]==-1)
{
for(k=0;k<nn;k++)
{
if((final[i][k]!=-1)&&(final[k][j]!=-1))
{
if((final[i][j]==-1) || ((final[i][j]!=-1)
&&(final[i][j]>final[i][k]+final[k][j])))
{
if(final[i][k]+final[k][j]>-1)
{
final[i][j]=final[i][k]+final[k][j];
via[i][j]=k;
}
}
}
}
}
}
}
cout<<"\n After Update :";
/* Display table
Updation */
for
(i=0;i<nn;i++)
{
cout<<"\n"<<ch[i]<<" Table";
cout<<"\nNode\tDist\tVia";
for(j=0;j<nn;j++)
{
cout<<"\n"<<ch[j]<<"\t"<<final[i][j]<<"\t";
if(i==via[i][j])
cout<<"-";
else
cout<<ch[via[i][j]];
}
}
getch();
}
----------------------------------------Socket Programming------------------------------------------
Client side.....
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
void error(const char* msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
int sockfd, port_no, temp;
struct sockaddr_in server_address;
struct hostent *server;
char buffer[255];
printf("Enter 'BHOKME' to disconnnect from Server \n");
if(argc<3)
{
printf("Either Port number or host address not entered");
exit(1);
}
port_no = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0 );
if(sockfd < 0)
{
error("Error opening the socket");
}
server = gethostbyname(argv[1]);
if(server == NULL)
{
printf("No Host exist with such address");
}
bzero((char *) &server_address, sizeof(server_address));
server_address.sin_family = AF_INET;
bcopy((char *) server->h_addr, (char *) &server_address.sin_addr, server->h_length);
server_address.sin_port = htons(port_no);
if(connect(sockfd, (struct sockaddr*) &server_address, sizeof(server_address)) < 0)
{
error("Connection Failed");
}
while(1)
{
bzero(buffer, 255);
fgets(buffer, 255, stdin);
temp = write(sockfd, buffer, strlen(buffer));
if(temp < 0)
{
error("Error wile writing");
}
bzero(buffer, 255);
temp = read(sockfd, buffer, 255);
if(temp < 0)
{
error("Error while reading");
}
printf("Server : %s",buffer);
int trigger = strncmp("BHOKME", buffer, 6);
if(trigger == 0)
{
break;
}
}
close(sockfd);
return 0;
}
server Side....
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
void error(const char* msg)
{
perror(msg);
exit(1);
}
int main(int argc, char *argv[])
{
printf("Enter 'BHOKME' to Close Server \n");
if(argc<2)
{
printf("Port Number not Entered \n");
exit(1);
}
int sockfd, sockfd_new, port_no, temp;
char buffer[255];
struct sockaddr_in server_address, client_address;
socklen_t client_len;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd<0)
{
error("Error Openinng Socket");
}
bzero((char *) &server_address, sizeof(server_address));
port_no = atoi(argv[1]);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = INADDR_ANY;
server_address.sin_port = htons(port_no);
if(bind(sockfd, (struct sockaddr *) &server_address, sizeof(server_address)) < 0 )
{
error("Binding Failed");
}
listen(sockfd, 5);
client_len = sizeof(client_address);
sockfd_new = accept(sockfd, (struct sockaddr*) &client_address, &client_len);
if(sockfd_new < 0)
{
error("Error while accepting the input");
}
while(1)
{
bzero(buffer, 255);
temp = read(sockfd_new, buffer, 255);
if(temp < 0)
{
error("Error While reading");
}
printf("client : %s \n", buffer );
bzero(buffer, 255);
fgets(buffer, 255, stdin);
temp = write(sockfd_new, buffer, strlen(buffer));
if(temp < 0)
{
error("Error while writing");
}
int trigger = strncmp("BHOKME", buffer, 6);
if(trigger == 0)
{ break; }
}
close(sockfd_new);
close(sockfd);
return 0;
}
No comments:
Post a Comment