Я написал следующий код, который создает некоторые пакеты и отправляет их на сервер UDP с помощью FIFO.Существует функция генератора пакетов, которая создает заголовок пакетов, и Генератор пакетов, который создает случайные слова и числа для тела.Пакеты сохраняются в списке и отправляются по очереди в очередь для отправки на сервер UDP.
import random
import string
import threading
import time
import queue
import socket
import pickle
server = '127.0.0.1'
port = 7766
clisock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #Making a UDP socket
packet = []
sequence = []
def PktGen(): #Packet Generator
chance = random.randint(1, 20)
print(chance)
for i in range(chance):
sequence.append(i)
try:
for i in range(chance):
init = '$$$$'
source = "name1"
destination = "name2"
beforeboddy = '@@@@'
boddy = BoddyGen(60)
end = '++++'
packet.append(init + source + ',' + destination + ',' + str(chance) + ',' + str(sequence[i]) + beforeboddy + boddy + end)
return packet
except Exception as e:
print(e)
def BoddyGen(size):
try:
chars = string.ascii_letters
digits = string.digits
charrand = ''
for i in range(size):
charrand += random.choice(chars + digits)
return charrand
except Exception as e:
print(e)
lk = threading.Lock()
plist = []
plist = PktGen()
print(plist)
def worker():
while True:
lk.acquire()
td = random.uniform(0, 2.5)
time.sleep(td)
item = q.get()
item = item.encode()
clisock.sendto(item, (server, port))
lk.release()
q.task_done()
num_worker_threads = 3
q = queue.Queue()
for i in range(num_worker_threads):
t = threading.Thread(target=worker)
t.daemon = True
t.start()
for p in plist:
q.put(p)
q.join()
Теперь я хочу использовать этот код внутри класса и не знаю, как использовать моего работника.Функция и поток и очередь внутри класса.
Я ценю любую помощь.
Спасибо