Python线程未执行函数

2024-05-15 04:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个需要多线程的程序(攻击者):

MESSAGE = b"flood"
IP = "127.0.0.1" 
BREAKER_PORT = 5005
CONTROLLER_PORT = 49153
ATTACKER_PORT1 = 49154
ATTACKER_PORT2 = 49155

def send_flood_messages(port_number):
    print("port number: " + str(port_number))
    attacker_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    attacker_socket.bind((IP, port_number))
    x = 0 #used to interchange between attackers to mitigate detection
    counter = 0 #handle replays
    while True:

        frame, meta = receiving_socket.recvfrom(65565)
        
        if len(frame) >= 34:
            UDP_dictionary = promisc.unpack_UDP(frame[34:])

        if UDP_dictionary.get("udp_dest") == CONTROLLER_PORT:
            counter += 1
            if counter == 2:
                time.sleep(float(wait_time))
                print("Sending flood message at time: " + str(time.time()))
                attacker_socket.sendto(MESSAGE, (IP, BREAKER_PORT))
                counter = 0

class attackerThread(threading.Thread):
    def __init__(self, threadID, name):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name

    def run(self, port_number):
        send_flood_messages(port_number)

attacker1 = attackerThread(1, "attacker1")
attacker2 = attackerThread(2, "attacker2")
attacker1.run(ATTACKER_PORT1)
attacker2.run(ATTACKER_PORT2)

当我运行两个线程时,只有一个线程执行并打印(第一个线程)。结果如下:

port number: 49154

我不明白为什么第二个线程没有执行和运行该函数?我希望看到以下输出:

port number: 49154
port number: 49155

Tags: selfipnumberiftimeportdefcounter

热门问题