gpt4 book ai didi

python-3.x - Python套接字: how to detect and list connected clients in server in the other clients and how to update it when a client disconnected?

转载 作者:行者123 更新时间:2023-12-03 12:08:10 27 4
gpt4 key购买 nike

我已经编写了一个用于接收多个客户端的服务器,它可以分别与客户端通信。在这里,我可以列出服务器中已连接的客户端,但是当客户端断开连接时,它不会从服务器中删除客户端。

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)列出服务器中的已连接客户端和其他客户端(每个客户端都需要列出服务器中当前处于 Activity 状态的所有客户端)

2)当服务器断开与服务器的连接时,还必须删除客户端,此更新的连接的客户端信息必须传递到所有当前连接的客户端中。

我已经通过以下答案进行了研究,但没有成功。

1st

2nd

3rd

最佳答案

我对服务器开发的兴趣不大,但这可能会有所帮助:

for client in connected_clients:
connected=str(connected_clients)
s.send(connected.encode())

可以根据要求完成此操作,例如:

data = s.recv(1024)
if data == <command name here as string>:
#Call the code above.

要删除不 Activity 的用户,您可以执行以下操作:

whoLeft = s.recv(1024)
if whoLeft in connected_clients:
connected_clients.remove(whoLeft)

您将不得不调整客户端,以便在断开连接之前客户端发送其地址,但是否则应该没问题。

关于python-3.x - Python套接字: how to detect and list connected clients in server in the other clients and how to update it when a client disconnected?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54643905/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com