Computer Network - 2

 AIM- Write a program to implement various Error

            Detection Mechanisms.

Find minimum hamming distance

n = int(input("Enter the dataword you want: ")) 

bit = int(input("How many bit of dataword you want to enter: ")) 

data = []

for i in range(n):

 temp = input("Enter dataword "+str(i+1)+ ": ")

 if temp not in data:

   data.append(temp) 

 else:

   print("You enter duplicate dataword.") 

minimumhamming = []

for i in range(len(data)):

 c1 = data[i] 

 for j in range(i+1,len(data)):

   count = 0 

   c2 = data[j] 

 for k in range(bit):

   if(c1[k] != c2[k]):

     count+=1 

 minimumhamming.append(count) 

print("Minimum hamming distance is ",min(minimumhamming))


Checksum

def findChecksum(c, k): 

 Sum = bin(int(c[0], 2)+int(c[1], 2)+int(c[2], 2)+int(c[3], 2))[2:] 

 if(len(Sum) > k):

   x = len(Sum)-k 

   Sum = bin(int(Sum[0:x], 2)+int(Sum[x:], 2))[2:] 

 if(len(Sum) < k):

   Sum = '0'*(k-len(Sum))+Sum

 Checksum = '' 

 for i in Sum: 

   if(i == '1'):

     Checksum += '0'

 else:

   Checksum += '1'

   

   return Checksum 

 

def checkReceiverChecksum(c, k, Checksum):

 ReceiverSum = bin(int(c[0], 2)+int(c[1], 2)+int(Checksum, 2) + int(c[2], 2)+int(c[3], 2)+int(Checksum, 2))[2:] 

 if(len(ReceiverSum) > k):

   x = len(ReceiverSum)-k 

   ReceiverSum = bin(int(ReceiverSum[0:x], 2)+int(ReceiverSum[x:], 2))[2:]

 ReceiverChecksum = ''

 for i in ReceiverSum:

   if(i == '1'):

     ReceiverChecksum += '0'

   else:

     ReceiverChecksum += '1'

 return ReceiverChecksum


seg = int(input("Enter the segment you want: ")) 

k = int(input("How many bits you want for each segment: ")) 

c = list(input("\nEnter the original data:").strip().split())[:seg]

Checksum = findChecksum(c, k) 

ReceiverChecksum = checkReceiverChecksum(c, k, Checksum)

print("Checksum generated at sender side:", Checksum) 

finalsum=bin(int(Checksum,2)+int(ReceiverChecksum,2))[2:] 

finalcomp='' 

for i in finalsum: 

 if(i == '1'):

   finalcomp += '0'

 else:

   finalcomp += '1'

if(int(finalcomp,2) == 0):

 print("Receiver Checksum is equal to 0") 

 print("Accept Data")

else:

 print("Receiver Checksum is not equal to 0") 

 print("Error Detected")



CRC

def crc(msg, divisor):

    while len(msg) >= len(divisor):

        if msg[0] != '0':

            for i in range(len(divisor)):

                if divisor[i] == msg[i]:

                    msg[i]= '0'

                else:

                    msg[i] = '1'

        del msg[0]

    return msg

 

msg = input("Enter the original message: ")

divisor = input("Enter the divisor: ")


temp = msg

msg = msg + "0"*(len(divisor)-1)

msg = list(msg)

msg = crc(msg, divisor)

send_msg = temp+"".join(msg)


print(f"Message sent to reciever: {send_msg}")

lis_send_msg = list(send_msg)

ans = input("Do you want to change any bit in your message: ")


if ans == "y" or ans == "Y":

    bit_pos = int(input("Which bit you want to change in sent message: "))

    if lis_send_msg[bit_pos] == "0":

        lis_send_msg[bit_pos] = "1"

    elif lis_send_msg[bit_pos] == "1":

        lis_send_msg[bit_pos] = "0"


receive_msg = "".join(lis_send_msg)


msg = crc(list(receive_msg), divisor)

if msg.count('1') != 0:

    print("Error")

else:

    print("No error")

    print(f"Receive message: {receive_msg[0:(len(receive_msg)-(len(divisor) -1)):]}")


Comments

Popular posts from this blog

Computer Architecture and Organization - 4

Design and Analysis of Algorithms - 2

Design and Analysis of Algorithms - 6

Design and Analysis of Algorithms - 1

Artificial Intelligence - 7