gpt4 book ai didi

python - 客户端断开Python连接时保持服务器打开

转载 作者:行者123 更新时间:2023-12-03 12:09:22 29 4
gpt4 key购买 nike

我目前正在开发一个项目,需要使用套接字(python)。我的问题是:
-当客户端断开连接时,我的服务器也断开连接。但是我不想要这个。我希望服务器一直保持 Activity 状态,该怎么办?

如果我关闭客户端,我希望服务器保持 Activity 状态

这是我的代码:

客户 :

import socket

hote = "localhost"
port = 12800

connexion_avec_serveur = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion_avec_serveur.connect((hote, port))
print("Established {}".format(port))

msg_a_envoyer = b""
while msg_a_envoyer != b"fin":
msg_a_envoyer = input("> ")
msg_a_envoyer = msg_a_envoyer.encode()
connexion_avec_serveur.send(msg_a_envoyer)
msg_recu = connexion_avec_serveur.recv(1024)
print(msg_recu.decode())

print("Close connection")
connexion_avec_serveur.close()

服务器 :
import socket
import select

hote = ''
port = 12800

connexion_principale = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connexion_principale.bind((hote, port))
connexion_principale.listen(5)
print("rece {}".format(port))

serveur_lance = True
clients_connectes = []
while serveur_lance:
connexions_demandees, wlist, xlist = select.select([connexion_principale],
[], [], 0.05)

for connexion in connexions_demandees:
connexion_avec_client, infos_connexion = connexion.accept()
clients_connectes.append(connexion_avec_client)

clients_a_lire = []
try:
clients_a_lire, wlist, xlist = select.select(clients_connectes,
[], [], 0.05)
except select.error:
pass
else:
for client in clients_a_lire:
msg_recu = client.recv(1024)
msg_recu = msg_recu.decode()
print("Recu {}".format(msg_recu))
client.send(b"5 / 5")
if msg_recu == "fin":
serveur_lance = False

打扰一下我的英语。

谢谢你的帮助

最佳答案

我怀疑不是客户端断开连接,而是客户端发送"fin"。那是客户端的循环停止的时间,也是服务器的循环停止的时间。您发布的代码中唯一会更改serveur_lance值的东西是客户端发送"fin"时:

while serveur_lance:
...
if msg_recu == "fin":
serveur_lance = False

因此,当有人在客户端中输入 fin时,服务器也将获得停止命令。

您可能不想关闭特定的连接并将其从 serveur_lance列表中删除,而不是在服务器代码中更改 clients_connectes的值。

关于python - 客户端断开Python连接时保持服务器打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44478684/

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