Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 21 additions & 9 deletions Solutions/Q-01/CRC_ErrorDetectionAlgorithm.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Contributed by - Anuj Das ( GC University, Silchar - @ Department of Computer Science )

// 1. Simulate Cyclic Redundancy Check (CRC) Error Detection Algorithm for Noisy Channel.
// 1. Simulate and implement Cyclic Redundancy Check (CRC) Error Detection Algorithm for Noisy Channel.

import java.util.Scanner;

Expand All @@ -10,7 +10,7 @@ public static String xorOperation(String modified_message, String polynomial) {
int size_in_bits = 16;
int shift = modified_message.length() - polynomial.length();
while(shift >= 0) {
modified_message = Integer.toBinaryString(Integer.parseInt(modified_message,2)^(Integer.parseInt(polynomial,2)<<shift));
modified_message = Integer.toBinaryString(Integer.parseInt(modified_message,2)^Integer.parseInt(polynomial,2)<<shift);
shift = modified_message.length() - polynomial.length();
}

Expand All @@ -25,8 +25,8 @@ public static String xorOperation(String modified_message, String polynomial) {

// It generates the encoded data/message to be transmitted (i.e., by adding CRC Check Bits to the Original Message)
public static String generateCRC_CheckBits(String modified_message, String polynomial) {
String remainder = xorOperation(modified_message,polynomial);
remainder = remainder.substring(remainder.length() - modified_message.length());
String remainder = xorOperation(modified_message,polynomial); // 16bits remainder
remainder = remainder.substring(remainder.length() - modified_message.length()); // substring(int startIndex)

int CRC_CheckBits[] = new int[modified_message.length()];
for(int i = 0; i < modified_message.length(); i++) {
Expand All @@ -49,34 +49,46 @@ public static String modifyMessage(String message, String polynomial) {
return message;
}

// Passing Through Noisy Channel
public static String noisyChannel(String msgToBeTransmitted) {
StringBuilder noise = new StringBuilder(msgToBeTransmitted);
noise.setCharAt(msgToBeTransmitted.length()/2 , '1');
String noisyData = noise.toString();
return noisyData;
}


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter the Data(Message) to be Encrypted: "); // Original Message
String message = sc.next(); // Test --> 1010000
String message = sc.next(); // Test --> 1010000 , 100100111

System.out.print("Enter the CRC Generator(Polynomial): "); // CRC Generator
String polynomial = sc.next(); // Test --> 1001

// Sender's end
String modified_message = modifyMessage(message,polynomial);
System.out.println("Modified Data(Message): " + modified_message);

String msgToBeTransmitted = generateCRC_CheckBits(modified_message, polynomial);
System.out.println("\nData(Message) is ready to be Transmitted: " + msgToBeTransmitted);

System.out.print("Enter the Data(Message) to be Transmitted: ");
String send_data = sc.next();
// Noisy Transmission Channel
String send_data = noisyChannel(msgToBeTransmitted);
System.out.println("Data(Message) Transmitted through Noisy Channel: "+send_data);


// Receiver's end
String checkAllZeroes = xorOperation(send_data,polynomial);

// It checks if the remainder contains only zeroes --> If it contains only zeros then the data/message is accepted else considered as error in Transmission
for(int i = 0; i < checkAllZeroes.length(); i++) {
if(checkAllZeroes.charAt(i) == '1') {
System.out.println("Error in Transmission!");
System.out.println("\nError in Transmission!\n");
return;
}
}

System.out.println("No! Error in Transmission!");
System.out.println("\nData(Message) Transmitted Successfully!\n");
}
}
2 changes: 1 addition & 1 deletion Solutions/Q-06/GetLocalHostAddress.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
class GetLocalHostAddress {
public static void main(String[] args) throws UnknownHostException {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println(localhost.getHostAddress());
System.out.println("LocalHost Address: "+localhost.getHostAddress());
}
}
6 changes: 5 additions & 1 deletion Solutions/Q-07/GetIPAddress.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@
class GetIPAddress {
public static void main(String[] args) throws UnknownHostException{
Scanner sc = new Scanner(System.in);
System.out.print("Enter a valid URL of Website: ");
System.out.print("Enter a valid URL(including https://) of Website: ");
String web_url = sc.next(); // https://www.youtube.com/

// if(web_url.charAt(0) == 'H' || web_url.charAt(0) == 'h') { }
// else { web_url = "https://" + web_url; }

try {
InetAddress address = InetAddress.getByName(new URL(web_url).getHost());
String ip = address.getHostAddress();
Expand Down