Python-[socket] Ejemplo simple de procesamiento de reconexión de cliente Demostración (1)

I. Introducción

En Python, cuando se utiliza un socket para la comunicación de red, si la conexión se desconecta, puede implementar el procesamiento de reconexión mediante los siguientes pasos

2. Código de muestra

1. Defina una función para establecer una conexión de 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)

Esta función utiliza un bucle while para intentar continuamente establecer socketuna conexión. Si socket.errorocurre una excepción, imprime la información de la excepción y espera 5 segundos para volver a intentarlo. Cuando la conexión es exitosa, la función devuelve un socket de conexión.

2. Utilice la función de conexión en el programa principal.

En el programa principal, puede utilizar la función de conexión definida anteriormente para establecer una conexión de socket. Si la conexión se desconecta, el programa se volverá a conectar automáticamente, como se muestra a continuación:

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)

En este programa, la conexión del socket se establece primero a través de la función de conexión y el socket de conexión se guarda en la variable sock. Luego ingresa a un bucle infinito para leer datos del socket y procesarlos. Una vez que ocurre una excepción socket.error, significa que la conexión se ha desconectado, en este momento el programa llamará a la función de conexión para volver a conectarse. Una vez que la reconexión sea exitosa, el programa continuará leyendo datos.

3. Código completo:

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. Ejecute el programa

Ejecute el siguiente comando en la terminal para ejecutar el programa Python

python3 socket_client.py

Cuando el servidor no se inicia y el cliente se inicia y se conecta al servidor, el efecto anormal es el siguiente:
Insertar descripción de la imagen aquí

De esta manera, el procesamiento de reconexión de sockets se puede implementar a través de una función de conexión. Cuando se desconecta la conexión, el programa se volverá a conectar automáticamente, asegurando así la continuidad de la comunicación de la red.

Lo anterior es un ejemplo de cómo manejar la reconexión anormal de un cliente en Python usando un cliente de socket. ¡Espero que te sea útil!

Supongo que te gusta

Origin blog.csdn.net/qq_43030934/article/details/132124745
Recomendado
Clasificación