C/Visual C - Servidor de Sinónimos en C

 
Vista:

Servidor de Sinónimos en C

Publicado por eli (1 intervención) el 06/11/2001 03:23:16
Necesito código de un servidor de sinónimos en C para conectarnos con un cliente en Delphi
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

Servidor de sinónimos en C para cliente en Delphi

Publicado por Alejandro (913 intervenciones) el 22/10/2024 18:42:12
A continuación, te proporcionaré un ejemplo básico de un servidor en C que puede recibir solicitudes de un cliente y devolver sinónimos. Este servidor utilizará sockets para la comunicación. El cliente en Delphi podrá conectarse a este servidor y solicitar sinónimos.

Código del servidor en C



Este código implementa un servidor simple que escucha en un puerto específico y responde con sinónimos predefinidos.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
 
#pragma comment(lib, "ws2_32.lib")
 
#define PORT 8080
#define BUFFER_SIZE 1024
 
// Función para obtener sinónimos
const char* obtenerSinonimos(const char* palabra) {
    if (strcmp(palabra, "rápido") == 0) {
        return "veloz, ágil, ligero";
    } else if (strcmp(palabra, "feliz") == 0) {
        return "contento, alegre, jubiloso";
    } else if (strcmp(palabra, "triste") == 0) {
        return "melancólico, apenado, desdichado";
    }
    return "Sinónimos no encontrados.";
}
 
int main() {
    WSADATA wsaData;
    SOCKET serverSocket, clientSocket;
    struct sockaddr_in serverAddr, clientAddr;
    int addrLen = sizeof(clientAddr);
    char buffer[BUFFER_SIZE];
 
    // Inicializar Winsock
    WSAStartup(MAKEWORD(2, 2), &wsaData);
 
    // Crear socket
    serverSocket = socket(AF_INET, SOCK_STREAM, 0);
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_port = htons(PORT);
 
    // Vincular el socket
    bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr));
    listen(serverSocket, 3);
 
    printf("Servidor escuchando en el puerto %d...\n", PORT);
 
    while (1) {
        // Aceptar conexión del cliente
        clientSocket = accept(serverSocket, (struct sockaddr*)&clientAddr, &addrLen);
        printf("Cliente conectado.\n");
 
        // Recibir palabra del cliente
        memset(buffer, 0, BUFFER_SIZE);
        recv(clientSocket, buffer, BUFFER_SIZE, 0);
        printf("Palabra recibida: %s\n", buffer);
 
        // Obtener sinónimos
        const char* sinonimos = obtenerSinonimos(buffer);
 
        // Enviar sinónimos al cliente
        send(clientSocket, sinonimos, strlen(sinonimos), 0);
 
        // Cerrar conexión con el cliente
        closesocket(clientSocket);
    }
 
    // Cerrar el socket del servidor
    closesocket(serverSocket);
    WSACleanup();
    return 0;
}

Instrucciones para compilar y ejecutar el servidor



1. Compila el código: Usa un compilador de C como g++ o Visual Studio.
- Si usas g++, puedes compilarlo con el siguiente comando:
1
g++ -o servidor servidor.c -lws2_32

2. Ejecuta el servidor: Una vez compilado, ejecuta el programa:
1
./servidor

Código del cliente en Delphi



A continuación, te muestro un ejemplo básico de un cliente en Delphi que se conecta al servidor y solicita sinónimos.

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
program ClienteSinonimos;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Winsock;
 
var
  WSAData: TWSAData;
  Socket: TSocket;
  ServerAddr: TSockAddrIn;
  Buffer: array[0..1023] of Char;
  Palabra: string;
  Sinónimos: string;
 
begin
  // Inicializar Winsock
  WSAStartup($0202, WSAData);
 
  // Crear socket
  Socket := socket(AF_INET, SOCK_STREAM, 0);
  ServerAddr.sin_family := AF_INET;
  ServerAddr.sin_port := htons(8080);
  ServerAddr.sin_addr.S_addr := inet_addr('127.0.0.1');
 
  // Conectar al servidor
  if connect(Socket, ServerAddr, SizeOf(ServerAddr)) = 0 then
  begin
    Write('Ingrese una palabra: ');
    ReadLn(Palabra);
 
    // Enviar palabra al servidor
    send(Socket, Palabra[1], Length(Palabra), 0);
 
    // Recibir sinónimos del servidor
    recv(Socket, Buffer, SizeOf(Buffer), 0);
    Sinónimos := Buffer;
 
    // Mostrar sinónimos
    WriteLn('Sinónimos: ', Sinónimos);
  end
  else
    WriteLn('Error al conectar al servidor.');
 
  // Cerrar el socket
  closesocket(Socket);
  WSACleanup;
end.

Instrucciones para compilar y ejecutar el cliente en Delphi



1. Crea un nuevo proyecto de consola en Delphi.
2. Copia y pega el código del cliente en el archivo principal.
3. Compila y ejecuta el cliente.

Prueba de la aplicación



1. Ejecuta el servidor en C.
2. Ejecuta el cliente en Delphi.
3. Ingresa una palabra (por ejemplo, "rápido") y el cliente debería recibir los sinónimos del servidor.

¡Buena suerte con tu proyecto, Ely!
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