Нужно сделать программу, которая будет подсчитывать количество копий самой себя запущенных. Первый экземпляр программы запускается в качестве сервера.
Пока что имеется такой код:
import socket, errno s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: n = 0 s.bind(('', 14900)) print('Количество копий программы: ', n) s.listen(10) while True: conn, addr = s.accept() n+=1 print('Количество копий программы: ', n) broadcast = ('Количество копий программы: ' + str(n)).encode() conn.sendto(broadcast, ('255.255.255.255', 14900)) conn.close() except Exception as e: if e.errno == errno.EADDRINUSE: s.connect(('localhost', 14900)) while True: data = s.recv(1024).decode() print(data) s.close() else: print(e)
Проблема в том, что при запуске 2х и более копий, всем предыдущим открытым клиентам приходит бесконечное количество пустых сообщений.
И можно ли как-то со стороны сервера отследить убийство процесса одного/нескольких запущенных клиентов, подключенных к нему?