C/Visual C - Ejecutar programas remotamente

 
Vista:

Ejecutar programas remotamente

Publicado por MarqueZ (1 intervención) el 30/05/2003 16:08:40
Tengo dos aplicaciones, una servidor y otra cliente.
Lo que necesito es que el servidor le haga saber de algun modo que tiene que ejecutar un programa.

La forma que pense es que deberia enviar una cadena de control al cliente para que este al reconocerla ejecute la instruccion para lanzar un programa.

Como lo hago desde la version de turbo c++ 3.0 paa dos. ?????

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Comunicación entre servidor y cliente en Turbo C++ 3.0

Publicado por Alejandro (1190 intervenciones) el 01/07/2025 19:53:15
MárqueZ, para implementar la comunicación entre un servidor y un cliente en Turbo C++ 3.0, puedes utilizar sockets para enviar una cadena de control desde el servidor al cliente. A continuación, te muestro un ejemplo básico de cómo hacerlo.

1. Configuración del servidor



El servidor escuchará en un puerto específico y enviará una cadena de control al cliente cuando se conecte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <net.h>
 
#define PORT 12345
#define BUFFER_SIZE 256
 
int main() {
    int server_socket, client_socket;
    struct sockaddr_in server_addr, client_addr;
    char buffer[BUFFER_SIZE];
 
    // Inicializar el socket
    server_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (server_socket < 0) {
        printf("Error al crear el socket.\n");
        return 1;
    }
 
    // Configurar la dirección del servidor
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = INADDR_ANY;
    server_addr.sin_port = htons(PORT);
 
    // Enlazar el socket
    bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr));
    listen(server_socket, 1);
 
    printf("Esperando conexiones en el puerto %d...\n", PORT);
    socklen_t addr_len = sizeof(client_addr);
    client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &addr_len);
 
    // Enviar la cadena de control al cliente
    strcpy(buffer, "EJECUTAR_PROGRAMA");
    send(client_socket, buffer, strlen(buffer), 0);
    printf("Cadena de control enviada: %s\n", buffer);
 
    // Cerrar sockets
    close(client_socket);
    close(server_socket);
    return 0;
}

2. Configuración del cliente



El cliente se conectará al servidor y esperará recibir la cadena de control. Cuando la reciba, ejecutará el programa correspondiente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <dos.h>
#include <net.h>
 
#define SERVER_IP "127.0.0.1" // Cambia esto por la IP del servidor
#define PORT 12345
#define BUFFER_SIZE 256
 
int main() {
    int client_socket;
    struct sockaddr_in server_addr;
    char buffer[BUFFER_SIZE];
 
    // Inicializar el socket
    client_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (client_socket < 0) {
        printf("Error al crear el socket.\n");
        return 1;
    }
 
    // Configurar la dirección del servidor
    server_addr.sin_family = AF_INET;
    server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
    server_addr.sin_port = htons(PORT);
 
    // Conectar al servidor
    if (connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
        printf("Error al conectar al servidor.\n");
        return 1;
    }
 
    // Recibir la cadena de control
    recv(client_socket, buffer, BUFFER_SIZE, 0);
    buffer[BUFFER_SIZE - 1] = '\0'; // Asegurarse de que la cadena esté terminada
 
    printf("Cadena de control recibida: %s\n", buffer);
 
    // Verificar la cadena de control y ejecutar el programa
    if (strcmp(buffer, "EJECUTAR_PROGRAMA") == 0) {
        system("nombre_del_programa.exe"); // Reemplaza con el nombre del programa a ejecutar
    }
 
    // Cerrar el socket
    close(client_socket);
    return 0;
}

Notas:


- Compilación: Asegúrate de tener configurado el entorno de Turbo C++ para compilar y ejecutar programas que utilicen sockets.
- Dirección IP: Cambia `SERVER_IP` en el cliente por la dirección IP del servidor si no está en la misma máquina.
- Ejecución de programas: El comando `system("nombre_del_programa.exe")` se utiliza para ejecutar un programa externo. Asegúrate de que el programa esté en el mismo directorio o proporciona la ruta completa.
- Manejo de errores: Este código es básico y no incluye un manejo de errores exhaustivo. Considera agregar más validaciones según sea necesario.

Con este enfoque, el servidor puede enviar una señal al cliente para que ejecute un programa específico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar