Код: Выделить всё
#!/usr/bin/python3
import socket
import threading
import concurrent.futures
threads = []
def listen_on_port(port):
HOST = '' # Symbolic name meaning all available interfaces
PORT = int(port) # Arbitrary non-privileged port
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print(addr,conn)
def main(ports):
with concurrent.futures.ThreadPoolExecutor() as executor:
for port in ports:
executor.submit(listen_on_port,port)
if __name__ == '__main__':
main(ports=[50010,50020,50030])
< /code>
Когда я запускаю этот скрипт, он слушает в портах, как и ожидалось. Я использую этот скрипт, чтобы проверить, что правила брандмауэра разрешают соединения в этих портах. И в другой системе я выполняю NC -ZV My -HOST 50010
Но я хотел бы Сделайте два улучшения: 1) Попросите потоки умирают через x секунд, 2) запустите потоки на задней земле, как демоны, чтобы мой скрипт выйдет и оставил потоки. < /p>
У меня пытался выяснить это в течение нескольких дней, и я никуда не получил. Пожалуйста, помогите!
Подробнее здесь: https://stackoverflow.com/questions/714 ... nt-of-time