In: Computer Science
Python
Design a class named IP_address to represent IP address objects. The IP_addressclass contains the following
For example, consider the following code fragment:
ip_key = '192.168.0.24' data_list =[(0, 84), (1, 84), (2, 84), (3, 84), (4, 84), (5, 84), (6, 84), (7, 84), (8, 84), (9, 84), (10, 84), (11, 84), (12, 84), (13, 84), (14, 84), (15, 84), (16, 84), (17, 84), (18, 84), (19, 84), (20, 84)] size = 3 ip = IP_address(key, data_list, size)
The data_list contains a list of tuple objects. Each tuple consists of the time-period value and the packet-size. You should summarize this list and create a frequency list, a sum of the packet-size list and an average of the packet-size list. There are a lot of data for each time-period value. We calculate the total number of bytes that the source host sent for each 10-second interval. For example, the above data_list will be divided into 3 groups, such as (0-9 second), (10-19 second) and (20-29 second)
Therefore, the IP_address object should contain:
This will give
ip_key = '192.168.0.24' data_list =[(0, 84), (1, 84), (2, 84), (3, 84), (4, 84), (5, 84), (6, 84), (7, 84), (8, 84), (9, 84), (10, 84), (11, 84), (12, 84), (13, 84), (14, 84), (15, 84), (16, 84), (17, 84), (18, 84), (19, 84), (20, 84)] size = 3 ip = IP_address(ip_key, data_list, size) print(ip.get_ip_address()) |
192.168.0.24 |
And
For example, consider the following code fragment:
ip_key = '192.168.0.24' data_list =[(0, 84), (1, 84), (2, 84), (3, 84), (4, 84), (5, 84), (6, 84), (7, 84), (8, 84), (9, 84), (10, 84), (11, 84), (12, 84), (13, 84), (14, 84), (15, 84), (16, 84), (17, 84), (18, 84), (19, 84), (20, 84)] size = 3 ip = IP_address(key, data_list, size)
The data_list contains a list of tuple objects.
Therefore, the ip object should contain:
For example:
Test | Result |
---|---|
ip_key = '192.168.0.24' data_list =[(0, 84), (1, 84), (2, 84), (3, 84), (4, 84), (5, 84), (6, 84), (7, 84), (8, 84), (9, 84), (10, 84), (11, 84), (12, 84), (13, 84), (14, 84), (15, 84), (16, 84), (17, 84), (18, 84), (19, 84), (20, 84)] size = 3 ip = IP_address(ip_key, data_list, size) print(ip.get_sum_list()) |
[[0, 840], [1, 840], [2, 84]] |
Python code:
class IP_address:
#Construct IP class
def __init__(self, ip_key, data_list,
size):
super(IP_address,
self).__init__()
self.ip_key =
ip_key
self.data_list =
data_list
self.size = size
#To get avg
def avg(self, lst):
return int(sum(lst) /
len(lst))
#To get IP key
def get_ip_address(self):
return self.ip_key
def filterBy(self):
stop = self.size *
10
ranges = [(n, min(n+10,
stop)-1) for n in range(0, stop, 10)]
freq_data = []
for i, r in
enumerate(ranges):
freq_data.append((i,[item for item in self.data_list if r[0] <=
item[0] <= r[1]]))
return freq_data
#To get sum of list
def get_sum_list(self):
#interval 10 secs
packets =
self.filterBy()
return [(size,sum([p[1]
for p in packs])) for size, packs in packets]
#Input datas
ip_key = '192.168.0.24'
data_list = [(33, 60), (34, 64), (34, 1500), (34, 712), (35, 52),
(35, 60), (36, 52), (36, 287), (37, 52), (37, 52), (37, 52), (39,
60), (40, 643), (40, 52)]
size = 5
ip = IP_address(ip_key, data_list, size)
print("==============IP Key===================")
print(ip_key)
print("==============Data list===================")
print(data_list)
print("==============Size===================")
print(size)
print("==============IP address===================")
print(ip.get_ip_address())
print("==============List of the sum of packet-size
list====================")
print(ip.get_sum_list())
output: