Computer Networks
Computer Networks
SERVER
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<string.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,MAX);
read(sockfd,buff,sizeof(buff));
printf("From client: %s\t To client : ",buff);
bzero(buff,MAX);
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
if(strncmp("exit",buff,4)==0)
{
printf("Server Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd,len;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(sockfd,(SA*)&servaddr, sizeof(servaddr)))!=0)
{
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
if((listen(sockfd,5))!=0)
{
printf("Listen failed...\n");
exit(0);
}
else
printf("Server listening..\n");
len=sizeof(cli);
connfd=accept(sockfd,(SA *)&cli,&len);
if(connfd<0)
{
printf("server acccept failed...\n");
exit(0);
}
else
printf("server acccept the client...\n");
func(connfd);
close(sockfd);
}
CLIENT
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#define MAX 80
#define PORT 43454
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n;
for(;;)
{
bzero(buff,sizeof(buff));
printf("Enter the string : ");
n=0;
while((buff[n++]=getchar())!='\n');
write(sockfd,buff,sizeof(buff));
bzero(buff,sizeof(buff));
read(sockfd,buff,sizeof(buff));
printf("From Server : %s",buff);
if((strncmp(buff,"exit",4))==0)
{
printf("Client Exit...\n");
break;
}
}
}
int main()
{
int sockfd,connfd;
struct sockaddr_in servaddr,cli;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(PORT);
if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))!=0)
{
printf("connection with the server failed...\n");
exit(0);
}
else
printf("connected to the server..\n");
func(sockfd);
close(sockfd);
}
UDP
CLIENT
#include<sys/socket.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define MAX 80
#define PORT 68586
#define SA struct sockaddr
int main()
{
char buff[MAX];
int sockfd,len,n;
struct sockaddr_in servaddr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(len));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
servaddr.sin_port=htons(PORT);
len=sizeof(servaddr);
for(;;)
{
printf("\nEnter string : ");
n=0;
while((buff[n++]=getchar())!='\n');
sendto(sockfd,buff,sizeof(buff),0,(SA *)&servaddr,len);
bzero(buff,sizeof(buff));
recvfrom(sockfd,buff,sizeof(buff),0,(SA *)&servaddr,&len);
printf("From Server : %s\n",buff);
if(strncmp("exit",buff,4)==0)
{
printf("Client Exit...\n");
break;
}
}
close(sockfd);
}
SERVER
#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<ctype.h>
#include<netdb.h>
#include<string.h>
#include<stdlib.h>
#define MAX 80
#define PORT 23866
#define SA struct sockaddr
void func(int sockfd)
{
char buff[MAX];
int n,clen;
struct sockaddr_in cli;
clen=sizeof(cli);
for(;;)
{
int i;
bzero(buff,MAX);
recvfrom(sockfd,buff,sizeof(buff),0,(SA *)&cli,&clen);
for(i=0; i<sizeof(buff); i++){
buff[i] = toupper(buff[i]);
}
printf("From client %s To client",buff);
bzero(buff,MAX);
n=0;
while((buff[n++]=getchar())!='\n');
sendto(sockfd,buff,sizeof(buff),0,(SA *)&cli,clen);
if(strncmp("exit",buff,4)==0)
{
printf("Server Exit...\n");
break;
}
}
}
int main()
{
int sockfd;
struct sockaddr_in servaddr;
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
printf("socket creation failed...\n");
exit(0);
}
else
printf("Socket successfully created..\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(PORT);
if((bind(sockfd,(SA *)&servaddr,sizeof(servaddr)))!=0)
{
printf("socket bind failed...\n");
exit(0);
}
else
printf("Socket successfully binded..\n");
func(sockfd);
close(sockfd);
}
DISTANCE VECTOR ROUTING
#include<stdio.h>
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
int main()
{
int dmat[20][20];
int n,i,j,k,count=0;
printf("\nEnter the number of nodes : ");
scanf("%d",&n);
printf("\nEnter the cost matrix :\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&dmat[i][j]);
dmat[i][i]=0;
rt[i].dist[j]=dmat[i][j];
rt[i].from[j]=j;
}
do
{
count=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
if(rt[i].dist[j]>dmat[i][k]+rt[k].dist[j])
{
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}while(count!=0);
for(i=0;i<n;i++)
{
printf("\n\nState value for router %d is \n",i+1);
for(j=0;j<n;j++)
{
printf("\nnode %d via %d Distance%d",j+1,rt[i].from[j]
+1,rt[i].dist[j]);
}
}
printf("\n\n");
}
CRC
#include <stdio.h>
#include <string.h>
char data[MAX_LEN];
char gen_poly[MAX_LEN];
char check_value[MAX_LEN];
int data_length, gen_poly_length, i, j;
void XOR()
if (check_value[i] == gen_poly[i])
check_value[i] = '0';
else
check_value[i] = '1';
void receiver()
scanf("%s", data);
crc();
if (i < gen_poly_length - 1)
printf("\nError detected\n\n");
else
void crc()
{
check_value[i] = data[i];
do
if (check_value[0] == '1')
XOR();
check_value[j] = data[i++];
int main()
scanf("%s", data);
scanf("%s", gen_poly);
data_length = strlen(data);
gen_poly_length = strlen(gen_poly);
data[i] = '0';
crc();
return 0;
HAMMING
#include <stdio.h>
#include <math.h>
int input[32];
int code[32];
int count = 0, i, j;
i = position - 1;
if (code[j] == 1)
count++;
i = i + 2 * position;
if (count % 2 == 0)
return 0;
else
return 1;
int main()
scanf("%d", &n);
printf("Enter the Data Word:\n");
scanf("%d", &input[i]);
i = 0;
p_n++;
i++;
c_l = p_n + n;
j = k = 0;
if (i == ((int)pow(2, k) - 1))
code[i] = 0;
k++;
else
code[i] = input[j];
j++;
code[position - 1] = value;
}
printf("%d", code[i]);
printf("\n");
scanf("%d", &code[i]);
int error_pos = 0;
if (value != 0)
error_pos += position;
if (error_pos+1 == 1)
else
return 0;
CHECKSUM
#include <stdio.h>
#include <conio.h>
#include <math.h>
int sender(int b[10], int k)
{
int checksum, sum = 0, i;
for (i = 0; i < k; i++)
sum += b[i];
printf("Sender's Sum: %d", sum);
checksum = ~sum;
printf("\nSender's Checksum: %d", checksum);
return checksum;
}
int receiver(int c[10], int k, int scheck)
{
int checksum, sum = 0, i;
for (i = 0; i < k; i++)
sum += c[i];
printf("\nReceiver's Sum: %d", sum);
sum = sum + scheck;
checksum = ~sum;
printf("\nReceiver's Checksum: %d", checksum);
return checksum;
}
int main()
{
int a[10], i, m, scheck, rcheck;
printf("\nEnter Size of the string: ");
scanf("%d", &m);
printf("\nEnter elements of Array: ");
for (i = 0; i < m; i++)
scanf("%d", &a[i]);
scheck = sender(a, m);
rcheck = receiver(a, m, scheck);
if (rcheck == 0)
printf("\nNo Error Detected");
else
printf("\nError Detected");
return 0;
}
GO BACK
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
struct frame
{
char ack;
int data;
} frm[10];
int goback(int n)
{
int r;
for (int i = 1; i <= n; i++)
{
printf("\nEnter data for packets[%d]", i);
scanf("%d", &frm[i].data);
frm[i].ack = 'y';
}
rand();
r = rand() % n;
frm[r].ack = 'n';
for (int i = 1; i <= n; i++)
{
if (frm[i].ack == 'n')
printf("\nThe packet number %d is not received\n", r);
}
printf("\n resending from packet %d", r);
for (int i = r; i <= n; i++)
{
sleep(2);
frm[i].ack = 'y';
printf("\nReceived data of packet %d is %d", i, frm[i].data);
}
printf("\n all packets sent successfully\n");
return 0;
}
int main()
{
int n;
printf("\nEnter the no. of packets to be sent:");
scanf("%d", &n);
goback(n);
return 0;
}
SELECTIVE
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <time.h>
#define WINDOW_SIZE 4
typedef struct {
int sequence_number;
bool ack_received;
bool is_sent;
} Packet;
int main() {
int NUM_PACKETS;
scanf("%d", &NUM_PACKETS);
Packet packets[NUM_PACKETS];
int window_start = 0;
packets[i].sequence_number = i;
packets[i].ack_received = false;
packets[i].is_sent = false;
srand(time(NULL));
if (!packets[i].is_sent) {
packets[i].is_sent = true;
if (!packets[i].ack_received) {
if (rand() % 10 < 3) {
continue;
if (packets[window_start].ack_received) {
window_start++;
window_end++;
return 0;
IP FINDER
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int i;
return 0;
copy = strdup(ip);
if (token == NULL)
return 0;
while (token) {
if (strlen(token) > 3)
return 0;
return 0;
}
num = atoi(token);
return 0;
dots++;
free(copy);
int i, colons = 0;
return 0;
if ((ip[i] >= '0' && ip[i] <= '9') || (ip[i] >= 'a' && ip[i] <= 'f') || (ip[i] >= 'A' && ip[i] <= 'F') || ip[i]
== ':') {
if (ip[i] == ':') {
colons++;
digits = 0;
if (colons > 7)
return 0;
if (colons == 2)
return 0;
} else {
digits++;
if (digits > 4)
return 0;
}
} else {
return 0;
if (isValidIPv4(ip)) {
} else if (isValidIPv6(ip)) {
} else {
printf("Invalid IP address\n");
int main() {
char ipAddress[100];
printf("\nEnter IP Address");
scanf("%s", ipAddress);
printIPAddress(ipAddress);
return 0;
BIT ORIENTED
#include <stdio.h>
void sendBit(unsigned int bit) {
printf("Sent bit: %u\n", bit);
}
#include <string.h>
char receiveCharacter()
char character;
return character;
int main()
printf("\nReg : 21BCE2386");
char data[100];
sendCharacter(data[i]);
printf("\n");
return 0;