Assignment 2
Assignment 2
1) Write a C program to perform checksum for error detection for both the
sender and receiver side.
Code -
#include <stdio.h>
#de ine DATA_SIZE 10
int calculateChecksum(int data[]) {
int checksum = 0;
for (int i = 0; i < DATA_SIZE; i++) {
checksum += data[i];
}
return checksum;
}
int main() {
int data[DATA_SIZE];
int senderChecksum, receiverChecksum;
printf("Sender Side:\n");
printf("Enter %d integers:\n", DATA_SIZE);
for (int i = 0; i < DATA_SIZE; i++) {
scanf("%d", &data[i]);
}
senderChecksum = calculateChecksum(data);
printf("Checksum generated at sender side: %d\n", senderChecksum);
printf("\nReceiver Side:\n");
printf("Enter %d integers received:\n", DATA_SIZE);
for (int i = 0; i < DATA_SIZE; i++) {
scanf("%d", &data[i]);
}
receiverChecksum = calculateChecksum(data);
printf("Checksum generated at receiver side: %d\n", receiverChecksum);
if (senderChecksum == receiverChecksum) {
printf("Checksums match. No errors detected.\n");
} else {
printf("Checksums do not match. Errors detected.\n");
}
return 0;
}
Output -
Sender Side:
Enter 10 integers:
56
35
8
67
23
56
34
21
34
56
Checksum generated at sender side: 390
Receiver Side:
Enter 10 integers received:
56
35
10
67
23
56
34
21
36
56
Checksum generated at receiver side: 394
Checksums do not match. Errors detected.
2)Write a C program to perform parity checker for error detection for both the
sender and receiver side.
Code -
#include <stdio.h>
#de ine DATA_SIZE 8
int calculateParityBit(int data[]) {
int count = 0;
for (int i = 0; i < DATA_SIZE; i++) {
if (data[i] == 1) {
count++;
}
}
return count % 2;
}
int main() {
int data[DATA_SIZE];
int senderParity, receiverParity;
printf("Sender Side:\n");
printf("Enter %d bits (0s and 1s):\n", DATA_SIZE);
for (int i = 0; i < DATA_SIZE; i++) {
scanf("%d", &data[i]);
}
senderParity = calculateParityBit(data);
printf("Parity bit generated at sender side: %d\n", senderParity);
printf("\nReceiver Side:\n");
printf("Enter %d bits received (0s and 1s):\n", DATA_SIZE);
for (int i = 0; i < DATA_SIZE; i++) {
scanf("%d", &data[i]);
}
receiverParity = calculateParityBit(data);
printf("Parity bit generated at receiver side: %d\n", receiverParity);
if (senderParity == receiverParity) {
printf("Parity bits match. No errors detected.\n");
} else {
printf("Parity bits do not match. Errors detected.\n");
}
return 0;
}
Output -
Sender Side:
Enter 8 bits (0s and 1s):
0
1
0
0
1
1
0
1
Parity bit generated at sender side: 0
Receiver Side:
Enter 8 bits received (0s and 1s):
1
1
1
0
0
1
1
1
Parity bit generated at receiver side: 0
Parity bits match. No errors detected.
Code -
#include <stdio.h>
#include <string.h>
#de ine POLYNOMIAL 0x04C11DB7
unsigned int crc32(const unsigned char *message, unsigned int size) {
unsigned int crc = 0xffffffff;
return 0;
}
Output -
Sender Side:
Enter message to send: 0xABBBBBBBB
CRC generated at sender side: 0x2A2185B9
Receiver Side:
Enter received message: 0xABBBBBBBB
CRC generated at receiver side: 0x2A2185B9
CRCs match. No errors detected.