forked from pskalip/Reliable-UDP-With-Selective-Repeat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdata_packet.py
83 lines (71 loc) · 1.99 KB
/
data_packet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Rahul R Shevade - 2017B3A70878H
# Kasam Vamshi - 2017B3A70740H
# Shanmukh Kaliprasad Padmanabhuni - 2017B3A71048H
# Pranav V Grandhi - 2017B2A71604H
# Suhas Reddy N - 2017B4A70885H
# Vashist SLN - 2017B3A70381H
import json
import hashlib
import sys
def checksum(data,pkt_type,number,status):
hash_str = str(data) + ":" + pkt_type + ":" + str(number) + ":" + str(status)
return hashlib.md5(hash_str.encode()).hexdigest()
def make_pktlist(content, filename):
packet_list=[]
pno=0
while(len(content) !=0):
data= content[:64]
pno+=1
csum= checksum(data,"data_pkt",pno-1, False)
data= jsonify(data, "data_pkt",pno-1,False,csum)
packet_list.append(data)
content=content[64:]
# print("MSS:",sys.getsizeof(packet_list[0]))
pno+=1
file=filename
data= bytes(file,'utf-8')
csum= checksum(data,"file_pkt",pno-1, False)
data= jsonify(data, "file_pkt",pno-1,False,csum)
packet_list.append(data)
pno+=1
bye="Bye"
data= bytes(bye,'utf-8')
csum= checksum(data,"close_pkt",pno-1, False)
data= jsonify(data, "close_pkt",pno-1,False,csum)
packet_list.append(data)
return packet_list
def checkSumVerification(pkt):
currpkt= json.loads(pkt.decode('utf-8'))
d=bytes(currpkt["data"])
t=currpkt["pkt_type"]
n=currpkt["number"]
s=currpkt["status"]
# print("csum:", checksum(d,t,n,s))
if(checksum(d,t,n,s)==currpkt['checksum']):
return True
else:
return False
def check_ack(ack):
ack_data = bytes(ack['data'])
if (checksum(ack_data, ack['pkt_type'], ack['number'], ack['status']) == ack['checksum']):
return True
else:
return False
def jsonify(data,pkt_type,number,status,csum):
pkt_dict={
"data": list(data),
"pkt_type": pkt_type,
"number": number,
"status": status,
"checksum": csum
}
pkt_json= json.dumps(pkt_dict).encode('utf-8')
return pkt_json
def getdict(pkt):
return json.loads(pkt.decode('utf-8'))
def createAck(data_num):
data="Ack Sent"
data= bytes(data,'utf-8')
csum=checksum(data,"ack",data_num,True)
ackpkt=jsonify(data,"ack",data_num,True,csum)
return ackpkt