Я написал сервер для приема нескольких клиентов, и он может общаться с клиентами отдельно.Здесь я могу перечислить подключенных клиентов на сервере, но он не удаляет клиентов с сервера, когда клиент отключен.
Server.py
import socket
from threading import Thread
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
ip = '0.0.0.0'
port = 4141
s.bind((ip, port))
s.listen(5)
connected_clients=[]
def handle_client(c, addr):
while True:
try:
message = input("You: ")
message = message.encode("ascii")
c.send(message)
except:
print("Disconnected for sending..")
reply = c.recv(4141)
if not reply:
print("Disconnected for receiving..")
else:
reply = reply.decode('ascii')
print("Other : ", reply)
while True:
c, addr = s.accept()
# print('Connected:', addr)
connected_clients.append(addr[0])
print(connected_clients)
t = Thread(target=handle_client, args=(c, addr))
t.setDaemon(True)
t.start()
Client.py
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 4141
ip = input('Enter the IP Address::')
s.connect((ip, port))
while True:
message = input("You: ")
message = message.encode("ascii")
s.send(message)
reply = s.recv(4141)
reply = reply.decode('ascii')
print("Other : ", reply)
s.close()
1) перечислить подключенных клиентов на сервере и других клиентов (каждый клиент должен указать, какие из них являются активными на сервере в данный момент)
2) Также необходимоУдалите клиентов, когда он отключен от сервера, эту обновленную информацию о подключенных клиентах необходимо передать всем подключенным в настоящее время клиентам.
Я изучил следующие ответы, но это не помогло.
1-й
2-й
3-й