Practical Python
Practical Python
def XOR():
global checkValue
result = ''
for j in range(N):
result += '0' if checkValue[j] == genPoly[j]
else '1'
checkValue = result
def receiver():
global data, checkValue, N
receivedData = input("Enter the received data: ")
data = receivedData
print("\n----------------------")
print("Data received:", receivedData)
crc()
i = 0
while i < N - 1 and checkValue[i] != '1':
i += 1
if i < N - 1:
print("\nError detected\n")
else:
print("\nNo error detected\n")
def crc():
global checkValue, data, i, N
checkValue = data
N = len(genPoly)
while i <= dataLength + N - 1:
if checkValue[0] == '1':
XOR()
checkValue = checkValue[1:] + (data[i] if i <
dataLength else '0')
i += 1
if __name__ == '__main__':
data = ""
checkValue = ""
genPoly = ""
dataLength, i, j = 0, 0, 0
N = 0
def formatIPv4(ipValue):
return "{}.{}.{}.{}".format(
(ipValue >> 24) & 0xFF,
(ipValue >> 16) & 0xFF,
(ipValue >> 8) & 0xFF,
ipValue & 0xFF
)
if __name__ == "__main__":
main()
#Socket Programming Client side (1/2)
import socket
def main():
s = socket.socket(socket.AF_INET, socket.
SOCK_STREAM)
host = "localhost"
port = 3333
s.connect((host, port))
while True:
message = input("Enter Client side message: ")
s.send(message.encode('utf-8'))
if message == "stop":
break
server_response = s.recv(1024).decode('utf-8')
print("Server says:", server_response)
s.close()
if __name__ == "__main__":
main()
#Socket Programming Server side (2/2)
import socket
def main():
ss = socket.socket(socket.AF_INET, socket.
SOCK_STREAM)
host = "localhost"
port = 3333
ss.bind((host, port))
ss.listen(1)
while True:
client_message = conn.recv(1024).decode('utf-8'
)
print("Client says:", client_message)
conn.close()
ss.close()
if __name__ == "__main__":
main()
#GO Back N
import random
def transmit_n(start, end):
print("Transmitting Frames:", end=" ")
for i in range(start, end + 1):
print(i, end=" ")
print()
def main():
n = int(input("Enter Size of the Window(n):- "))
total = int(input("Enter total number of frames:- "
))
base = 1
next_seq_num = 1
if r == 0:
print(f"Acknowledgement for frames {base}
to {next_seq_num} is Received")
base = next_seq_num + 1
next_seq_num = base
else:
print(f"Acknowledgement for frames {base}
to {next_seq_num} is not Received")
print("Revisiting")
next_seq_num = base
print()
if __name__ == "__main__":
main()
#Hamming Code
import math
def print_array(arr):
for num in arr:
print(num, end=' ')
print()
def log2(num):
return int(math.log(num) / math.log(2))
def hamming_code():
n = int(input("Enter number of bits for Hamming
Data: "))
b = [int(x) for x in input("Enter the string: ").
split()]
r = 0
while True:
if 2 ** r >= r + n + 1:
break
r += 1
print("Redundant bits:", r)
a = [0] * (r + n + 1)
index = 0
print("Generated Code:")
print_array(a)
bit = ""
for i in range(1, r + n + 1):
l = log2(i)
if 2 ** l == i:
num = i
data_list = []
while True:
for j in range(i):
if num > r + n:
break
data_list.append(num)
num += 1
num += i
if num > r + n:
break
count = 0
for j in range(len(data_list)):
if a[r + n - data_list[j]] == 1:
count += 1
if count % 2 == 0:
bit = "0" + bit
else:
bit = "1" + bit
num = int(bit, 2)
print("Error at position", num)
a[index] = 1 - a[index]
if __name__ == "__main__":
hamming_code()