Для прослушивания нескольких портов одновременно в Python можно воспользоваться модулем `socket`, который позволяет создавать сокеты для работы с сетевыми соединениями. Вот пример кода, который позволяет слушать несколько UDP портов одновременно:
```python
import socket
# Указываем порты, которые хотим прослушивать
ports = [1234, 5678]
# Создаем сокеты для каждого порта
sockets = []
for port in ports:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('0.0.0.0', port))
sockets.append(sock)
# Слушаем порты
while True:
for sock in sockets:
data, addr = sock.recvfrom(1024)
print(f"Received data on port {sock.getsockname()[1]} from {addr}: {data.decode()}")
```
Чтобы улучшить управление кодом для отправки пакетов WOL и прослушивания порта UDP, можно создать отдельные функции для этих задач. Например, функция для создания WOL-пакета с правильным MAC-адресом:
```python
def create_wol_packet(mac_address):
# Логика создания WOL-пакета
pass
```
И функция для отправки WOL-пакета на устройство:
```python
def send_wol_packet(mac_address, ip_address, port):
wol_packet = create_wol_packet(mac_address)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(wol_packet, (ip_address, port))
sock.close()
```
Для выполнения условий для конкретной операционной системы при опознании пакета WOL можно воспользоваться библиотекой `platform`, которая позволяет получить информацию о текущей операционной системе. Например:
```python
import platform
if platform.system() == 'Windows':
# Логика для Windows
pass
elif platform.system() == 'Linux':
# Логика для Linux
pass
else:
# Другие операционные системы
pass
```
Таким образом, используя вышеуказанные функции и проверки, можно более гибко управлять отправкой пакетов WOL и прослушиванием порта UDP в Python.