# Cómo conectarse a CloudBox

Para interactuar con el **RUFUS CloudBox** y enviar comandos, deberá establecer una **conexión de socket TCP**. Esto le permite enviar comandos de protocolo para controlar y configurar el CloudBox, recuperar su estado y gestionar las operaciones de cronometraje de carreras.

La CloudBox puede gestionar la conexión de varios clientes al mismo tiempo.

Aquí tienes una guía paso a paso sobre cómo conectarte a la CloudBox, por ejemplo, en la **dirección IP 192.168.1.10** y el **puerto 8080**.

### Paso 1: Compruebe la configuración de su red.

Antes de conectarse a CloudBox, asegúrese de lo siguiente:

1. **Conectividad de red**:
* El ordenador o dispositivo que utilice para conectarse a CloudBox debe estar en la **misma red** que CloudBox. Normalmente se trata de una **red de área local (LAN)**, o puede conectarse a través de Wi-Fi si CloudBox está conectado de forma inalámbrica.
* Verifique la **dirección IP** y el **número de puerto** de CloudBox (en este caso, IP: `192.168.1.10`, Puerto: `8080`). Puede obtener esta información de la configuración del sistema (a través de `GETSYSTEMCONFIG` o consultando la información de configuración del sistema).
2. **Cortafuegos y acceso a puertos**:
* Asegúrese de que el puerto `8080` esté **abierto** y no esté bloqueado por ningún cortafuegos en su equipo o red local.
* La CloudBox debe ser accesible en la IP y el puerto especificados. Si existen restricciones de red, es posible que deban ajustarse.

### Paso 2: Abrir una conexión de socket TCP

Para conectarse a CloudBox, necesitará un terminal o software que admita **conexiones de socket TCP**. Dependiendo de su sistema operativo y las herramientas disponibles, puede utilizar varios métodos para establecer esta conexión.

#### Uso de la línea de comandos (Linux/macOS/Windows)

Por ejemplo, puede usar **netcat (nc)**, una herramienta de línea de comandos común para la depuración de redes, para abrir una conexión TCP.

* **Linux/macOS**: abre una terminal y ejecuta el siguiente comando:
nc 192.168.1.10 8080
* **Windows**: también puede usar PowerShell o CMD para ejecutar el mismo comando (si `nc` está instalado), o puede usar otras herramientas como **PuTTY** para establecer una conexión de socket TCP.

#### Uso de un lenguaje de programación (Python, C# y Node.js)

También puede conectarse a CloudBox utilizando lenguajes de programación como Python, C# y Node.js. A continuación, se muestran ejemplos para cada uno de estos lenguajes, que muestran cómo establecer una conexión TCP, enviar un comando y recibir una respuesta de CloudBox.

#### Ejemplo de Python

En Python, puede utilizar el módulo `socket` para establecer una conexión TCP con la CloudBox.

```python
# CloudBox IP and port
HOST = '192.168.1.10'  # CloudBox IP address
PORT = 8080            # CloudBox TCP port

# Create a TCP socket
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    # Connect to CloudBox
    s.connect((HOST, PORT))
    print(f"Connected to CloudBox at {HOST}:{PORT}")

    # Example of sending a command (e.g., GETSYSTEMSTATUS)
    command = "GETSYSTEMSTATUS\r\n"
    s.sendall(command.encode('utf-8'))

    # Receive response from CloudBox
    data = s.recv(1024)
    print(f"Received: {data.decode('utf-8')}")

# The connection will automatically close when the block ends
```

**Ejemplo en C#**

En C#, puede utilizar la clase `TcpClient` para establecer una conexión TCP con CloudBox e interactuar con el sistema.

```csharp
using System.Net.Sockets;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        // CloudBox IP and port
        string host = "192.168.1.10";
        int port = 8080;

        try
        {
            // Create a TCP client and connect to the CloudBox
            TcpClient client = new TcpClient(host, port);
            Console.WriteLine($"Connected to CloudBox at {host}:{port}");

            // Get the network stream
            NetworkStream stream = client.GetStream();

            // Example of sending a command (e.g., GETSYSTEMSTATUS)
            string command = "GETSYSTEMSTATUS\r\n";
            byte[] dataToSend = Encoding.ASCII.GetBytes(command);

            // Send the command to CloudBox
            stream.Write(dataToSend, 0, dataToSend.Length);
            Console.WriteLine("Command sent");

            // Buffer for receiving data
            byte[] dataReceived = new byte[1024];
            int bytes = stream.Read(dataReceived, 0, dataReceived.Length);

            // Display the response
            string response = Encoding.ASCII.GetString(dataReceived, 0, bytes);
            Console.WriteLine($"Received: {response}");

            // Close the stream and client connection
            stream.Close();
            client.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine($"Error: {e.Message}");
        }
    }
}
```

**Ejemplo de Node.js**

En Node.js, puede utilizar el módulo `net` integrado para crear una conexión TCP con CloudBox e interactuar con ella.

```javascript
javascriptCopy codeconst net = require('net');

// CloudBox IP and port
const HOST = '192.168.1.10';
const PORT = 8080;

// Create a socket connection to CloudBox
const client = new net.Socket();

client.connect(PORT, HOST, () => {
    console.log(`Connected to CloudBox at ${HOST}:${PORT}`);
    
    // Example of sending a command (e.g., GETSYSTEMSTATUS)
    const command = "GETSYSTEMSTATUS\r\n";
    client.write(command);  // Send the command to the CloudBox
});

// Receive response from CloudBox
client.on('data', (data) => {
    console.log(`Received: ${data}`);
});

// Handle connection close
client.on('close', () => {
    console.log('Connection closed');
});

// Handle errors
client.on('error', (err) => {
    console.error(`Error: ${err.message}`);
});
```

### Paso 3: Enviar comandos de protocolo

Una vez establecida la conexión, puede empezar a enviar comandos de protocolo a la CloudBox según sea necesario. Por ejemplo, puede enviar:

* `START` para iniciar la sesión de cronometraje.
* `GETSYSTEMSTATUS` para comprobar el estado actual del sistema.
* `SETSYSTEMTIME` para configurar la hora del sistema.

Asegúrese de seguir la sintaxis de comando correcta tal como se define en el protocolo (por ejemplo, enviar comandos seguidos de `\r\n` para indicar el final del mensaje).

### Paso 4: Recibir respuestas

Después de enviar cada comando, la CloudBox responderá con la información relevante, como un mensaje de estado o el resultado del comando. Las respuestas suelen estar en texto sin formato o en formato JSON, dependiendo del comando que haya enviado.

### Paso 5: Cerrar la conexión

Una vez que haya terminado de interactuar con CloudBox, es importante cerrar la conexión del socket TCP para liberar recursos. Si está utilizando una conexión manual a través de una herramienta como netcat, puede cerrarla escribiendo `CTRL + C` o utilizando el comando `exit`.

En entornos de programación (por ejemplo, Python), la conexión se cerrará automáticamente cuando salga del bloque de código o se puede cerrar manualmente usando `socket.close()` si está gestionando la conexión manualmente.

### Conclusión

Conectarse al **RUFUS CloudBox** a través de un socket TCP es un proceso sencillo, y le permite interactuar con el sistema en tiempo real para gestionar las operaciones de cronometraje, recuperar los estados del sistema y configurar los ajustes. Solo asegúrese de que está en la misma red, que la dirección IP y el puerto son correctos, y que su firewall está configurado para permitir la conexión. Una vez conectado, puede controlar el sistema y recuperar datos esenciales para las operaciones de cronometraje de carreras.
