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
Post a Comment