Skip to content

Commit f08f46d

Browse files
WillowSauceRWillowSauceR
authored andcommitted
Fix progress bar stuck
1 parent 30645f8 commit f08f46d

File tree

1 file changed

+36
-15
lines changed

1 file changed

+36
-15
lines changed

scan.py

Lines changed: 36 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,50 @@ def send_packet(udp_skt: socket.socket, ip: str, port_range: list, interval: flo
3434
conn.send(1)
3535

3636

37-
def scanner(ip: str, local_port: int, interval: float):
38-
udp_skt = get_udp_socket(local_port)
39-
40-
pbar = tqdm(iterable=range(65530), desc="Scaning progress",
37+
prog_mon = 0
38+
def progerss_monitor(conn):
39+
global prog_mon
40+
prog_mon = 0
41+
while True:
42+
prog_mon_tmp = prog_mon
43+
time.sleep(1)
44+
if prog_mon == prog_mon_tmp:
45+
for i in range(65536-prog_mon):
46+
try:
47+
conn.send(1)
48+
except BrokenPipeError:
49+
pass
50+
break
51+
52+
53+
is_recving = False
54+
def scanner(udp_skt: socket.socket, addr: str, interval: float):
55+
global is_recving, prog_mon
56+
pbar = tqdm(iterable=range(65536), desc="Scaning progress",
4157
leave=False, unit="Port", unit_scale=False)
42-
43-
threading.Thread(target=recv_packets, args=(
44-
udp_skt, pbar), daemon=True).start()
45-
46-
port_ranges = split_list(65535, mp.cpu_count() - 1)
58+
59+
if not is_recving:
60+
is_recving = True
61+
threading.Thread(target=recv_packets, args=(
62+
udp_skt, pbar), daemon=True).start()
63+
64+
port_ranges = split_list(65536, mp.cpu_count() - 1)
4765

4866
parent_conn, child_conn = mp.Pipe()
4967

68+
threading.Thread(target=progerss_monitor, args=(
69+
child_conn,), daemon=True).start()
70+
5071
for port_range in port_ranges:
51-
mp.Process(target=send_packet, args=(udp_skt, ip,
72+
mp.Process(target=send_packet, args=(udp_skt, addr,
5273
port_range, interval, child_conn), daemon=True).start()
53-
74+
5475
for p in pbar:
55-
# break
5676
parent_conn.recv()
77+
prog_mon += 1
5778

5879
time.sleep(3)
5980

60-
udp_skt.close()
61-
6281

6382
def recv_packets(udp_skt, pbar):
6483
server_count = 0
@@ -109,5 +128,7 @@ def recv_packets(udp_skt, pbar):
109128
interval = args.interval
110129
local_port = args.port
111130

131+
udp_skt = get_udp_socket(local_port)
132+
112133
for addr in get_ip_list(addr):
113-
scanner(addr, local_port, interval)
134+
scanner(udp_skt, addr, interval)

0 commit comments

Comments
 (0)