#include <winsock2.h>
#include <iostream>
#pragma comment(lib, "ws2_32.lib") // Vincular la biblioteca Winsock
using namespace std;
int main() {
WSADATA wsaData;
SOCKET sock;
struct sockaddr_in server;
char message[1000], server_reply[2000];
// Inicializar Winsock
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
cout << "Fallo en la inicialización de Winsock. Error Code: " << WSAGetLastError() << endl;
return 1;
}
// Crear un socket
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == INVALID_SOCKET) {
cout << "No se pudo crear el socket. Error Code: " << WSAGetLastError() << endl;
WSACleanup();
return 1;
}
// Configurar la estructura del servidor
server.sin_family = AF_INET;
server.sin_port = htons(8888); // Puerto del servidor
server.sin_addr.s_addr = inet_addr("127.0.0.1"); // Dirección IP del servidor
// Conectar al servidor
if (connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0) {
cout << "Conexión fallida. Error Code: " << WSAGetLastError() << endl;
closesocket(sock);
WSACleanup();
return 1;
}
// Enviar un mensaje al servidor
cout << "Ingrese un mensaje: ";
cin.getline(message, sizeof(message));
send(sock, message, strlen(message), 0);
// Recibir una respuesta del servidor
int recv_size;
if ((recv_size = recv(sock, server_reply, sizeof(server_reply), 0)) == SOCKET_ERROR) {
cout << "Error al recibir datos. Error Code: " << WSAGetLastError() << endl;
}
server_reply[recv_size] = '\0'; // Asegurarse de que la cadena esté terminada
cout << "Respuesta del servidor: " << server_reply << endl;
// Cerrar el socket y limpiar Winsock
closesocket(sock);
WSACleanup();
return 0;
}