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


0
#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;
}
g++ -o servidor servidor.c -lws2_32
./servidor
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.