Introduction
En Python, lors de l'utilisation d'un socket pour la communication réseau, si la connexion est déconnectée, les étapes suivantes peuvent être utilisées pour réaliser le traitement de reconnexion
2. Exemple de code
1. Définir une fonction pour établir une connexion socket
import socket
def connect_socket(host, port):
while True:
try:
# 建立socket连接
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
print('Socket connected')
return sock
except socket.error as e:
print('Socket error:', e)
time.sleep(5)
Cette fonction utilise une boucle while pour essayer en permanence d'établir socket
une connexion. Si socket.error
une exception se produit, elle imprime le message d'exception et attend 5 secondes pour réessayer. Lorsque la connexion réussit, la fonction renvoie une socket connectée.
2. Utilisez la fonction de connexion dans le programme principal
Dans le programme principal, la fonction de connexion définie ci-dessus peut être utilisée pour établir une connexion socket. Si la connexion est perdue, le programme se reconnectera automatiquement, comme suit :
def main():
host = 'example.com'
port = 8888
sock = connect_socket(host, port)
# 循环处理数据
while True:
try:
# 从socket中读取数据
data = sock.recv(1024)
# 处理数据
...
except socket.error as e:
print('Socket error:', e)
sock = connect_socket(host, port)
Dans ce programme, la connexion socket est d'abord établie via la fonction de connexion et la socket de connexion est enregistrée dans la sock variable. Ensuite, il entre dans une boucle infinie pour lire les données du socket et les traiter. Une fois qu'une exception socket.error se produit, cela signifie que la connexion a été déconnectée. À ce moment, le programme appellera la fonction de connexion pour se reconnecter. Une fois la reconnexion réussie, le programme continuera à lire les données.
3. Code complet :
import socket
import time
def connect_socket(host, port):
while True:
try:
# 建立socket连接
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
print('Socket connected')
return sock
except socket.error as e:
print('Socket client reconnect =====> {}, Socket error:{}'.format('5s', e))
time.sleep(5)
def main(host, port):
sock = connect_socket(host, port)
# 循环处理数据
while True:
try:
# 从socket中读取数据
data = sock.recv(1024)
# 处理数据
...
except socket.error as e:
print('Socket recv data error:', e)
sock = connect_socket(host, port)
if __name__ == '__main__':
host = '127.0.0.1'
port = 8080
# connect_socket(host, port)
main(host, port)
3. Exécutez le programme
Exécutez la commande suivante dans le terminal pour exécuter le programme Python
python3 socket_client.py
Lorsque le serveur n'est pas démarré et que le client se connecte au serveur au démarrage, l'effet anormal est le suivant :
De cette manière, le traitement de reconnexion de socket peut être réalisé via une fonction de connexion. Lorsque la connexion est déconnectée, le programme se reconnecte automatiquement, assurant ainsi la continuité de la communication réseau.
Ce qui précède est un exemple de la façon de gérer une reconnexion client anormale en Python à l'aide d'un client socket. J'espère que cela vous sera utile !