#include <iostream>
#include <WinSock2.h>
int main() {
// Inicializar Winsock
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
std::cerr << "Error al inicializar Winsock." << std::endl;
return 1;
}
// Crear el socket del servidor
SOCKET serverSocket = socket(AF_INET, SOCK_STREAM, 0);
if (serverSocket == INVALID_SOCKET) {
std::cerr << "Error al crear el socket del servidor." << std::endl;
WSACleanup();
return 1;
}
// Configurar la información de dirección del servidor
sockaddr_in serverAddr;
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_port = htons(12345); // Puedes cambiar el puerto según sea necesario
// Vincular el socket a la dirección y puerto
if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
std::cerr << "Error al vincular el socket a la dirección y puerto." << std::endl;
closesocket(serverSocket);
WSACleanup();
return 1;
}
// Escuchar conexiones entrantes
if (listen(serverSocket, SOMAXCONN) == SOCKET_ERROR) {
std::cerr << "Error al poner el socket en modo escucha." << std::endl;
closesocket(serverSocket);
WSACleanup();
return 1;
}
std::cout << "Servidor escuchando en el puerto 12345..." << std::endl;
// Aceptar una conexión entrante
SOCKET clientSocket = accept(serverSocket, NULL, NULL);
if (clientSocket == INVALID_SOCKET) {
std::cerr << "Error al aceptar la conexión entrante." << std::endl;
closesocket(serverSocket);
WSACleanup();
return 1;
}
std::cout << "Cliente conectado." << std::endl;
// Aquí puedes realizar la lógica del servidor, enviar y recibir datos, etc.
// Cerrar sockets y limpiar
closesocket(clientSocket);
closesocket(serverSocket);
WSACleanup();
return 0;
}